2 - 連続表示

新規書き込み

※該当の記事タイトル一覧はリンク一覧から参照できます。

カラオケJOYSOUND for Nintendo Switch

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2018年1月13日
カラオケJOYSOUND for Nintendo SwitchカラオケJOYSOUNDはWii、Wii Uと使ってきたので馴染み深いこともあり、Switchでもやってみることにしました。ソフト自体はニンテンドーeショップから無料でダウンロードできます。実際にカラオケをする場合には、3時間券(300円)、24時間券(500円)、30日券(1,400円)、90日券(2,800円)のいずれかを別途購入することになります(価格は税別)。マイクはWiiで使っていたものがそのまま使えます。

3時間券を購入して実際に歌ってみたものの、マイクの音声がテレビから遅れて聞こえてきて、少し気持ち悪い感じがしました。Switchに接続しているテレビの設定は「ゲームモード」にして音声の遅延を防ぐようにしたのですが、やはりHDMIケーブルがボトルネックになっているようです。カラオケJOYSOUND上でも、音声の遅延がある場合には「Switch本体のヘッドホン端子にスピーカーを繋いで…」と指示があります。

そこで、18年位前に購入したソニーのスピーカーをSwitchに接続したところ、音質も音量も十分で音声の遅延もほとんどなく、快適にカラオケをできる環境になりました。

いつも通りにサザン(桑田佳祐)、安全地帯、ビートルズ、ビリー・ジョエル、演歌などを一通り歌い、途中から妻も合流してビールを飲みながらのカラオケです。その後、中学生の息子が部活から帰ってきたので、クレームが出る前に終了ということになりました。

もちろん楽曲はネットからのダウンロードなので、曲数は「14万曲以上」と何でもありの状態です。どなたか歌ってみたい方がいましたら、ぜひ我が家へどうぞ。



ニンテンドー関連記事(リンク一覧): プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / 慣性シューティング イネルシア - プチコン4でエクセリオン風ゲーム / フルーツ好きのアルパカさん - プチコン4で物理演算系ジャンプアクションゲーム / DOTOWN画像一覧表 ミニゲーム付き (プチコン4) / ...(記事連続表示)

Nintendo Switch Joy-Con (L) ネオンブルー/ (R) ネオンレッド
Nintendo Switch Joy-Con (L) ネオンブルー/ (R) ネオンレッドをAmazon.co.jpでチェック

ゼルダの伝説 ブレス オブ ザ ワイルド

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2018年1月8日
ゼルダの伝説 ブレス オブ ザ ワイルドSwitchを手に入れたらまず購入しようと思っていた「ゼルダの伝説 ブレス オブ ザ ワイルド」ですが、転売屋の影響でSwitchを定価で買えるタイミングがなかなか掴めず、後から発売されたスーパーマリオオデッセイの方を先にプレイすることになってしまいました。先日スーパーマリオオデッセイをクリアしたタイミングでようやくゼルダを購入したのですが、Amazonのレビューなどを読んでいた通り、相当面白いゲームに仕上がっています。

私が遊んだゼルダシリーズは、初代の「ゼルダの伝説(ファミコンのディスクシステム)」のみです。正確には次作の「リンクの冒険」も少しだけやりましたが、難しすぎて早々とリタイヤしたこともあり、ほとんど記憶にありません。さすがに30年以上前のゲームと比べるのは無理がありますが、当時のゼルダと今回のゼルダでは何から何まで違いすぎてしまい、同じシリーズのゲームとは思えませんでした。(スーパーマリオオデッセイの方は、「スーパーマリオシリーズ」というのに違和感はありませんでしたが)

第一に操作が非常に複雑です。初代のゼルダは上下左右に移動と、AとBで2通りの攻撃というシンプル操作でした。今回のゼルダは3Dということもあり、左レバーで前後左右の移動と押し込みでしゃがむ動作、右レバーでカメラ操作と押し込みで望遠鏡、右手のボタンでアクション(A)としまう(B)とジャンプ(X)と攻撃(Y)の動作があり、攻撃は通常の攻撃(Y)と弓矢(ZR)と武器を投げる(R)のとシーカーストーンのアイテム使用(L)があって…、とうことで、すぐに飲み込むのはまず不可能です。

ただ、時間が経つにつれてそれなりに操作を覚えてくると、色々なことを試したくなってきます。たいまつで草や木箱を燃やしたり、斧で木を切り倒しまくったり、色々な食品アイテムを使って料理したり、見知らぬ土地に旅に出かけたり、やりたい時にやりたい事をできる自由さがあります(これは初代ゼルダには無いポイントですね)。それでいてダラダラと時間がだけが過ぎていくのではなく、ちょうどいいタイミングでイベントやヒントが入って、時間と共にゲームが進行していくのも実感できます。

私はまだプレイ時間10時間弱ですが、クリアするのには100時間程度かかると聞いています。ただ、100時間と聞くと「2017年のランニング総時間より長い(同じ時間で1000km以上走れる)」とか、「英語やプログラミング言語(Python)をもっと学べる」とか、ゲームよりも自分自身の体力アップ、スキルアップの方に時間を費やしたいという気持ちになってしまいます。中学、高校、大学の時のように、いくらでも時間があった頃なら100時間位は何でも無かったと思いますが、今では「100時間をかけることで得られる個人的価値」が大きい方にどうしても行ってしまいます。

面白いゲームなのは間違いないのですが、ゼルダの優先順位は意識的に英語、プログラミング、ランニング、スキーよりも下にして、本当にやることが無い時だけプレイするようにします。やることが無い時にこのゲームをやると、あっという間に時間が過ぎていきます(それだけ楽しいゲームなのは間違いないです)。

まだ本当に最初の段階ですが、何枚かスクリーンショットをアップしておきます。画質についても「ゲームの進化」を感じずにはいられない程、本当に綺麗です。




そんな感じでクリアするのには短くても半年程度、下手をすると1年くらいかかってしまうか、クリアできないまま終わるのではないかと思っています。このゲームのためだけにSwitchを購入する人もいると聞きましたが、それも誇張表現ではないということはよく分かりました。




ニンテンドー関連記事(リンク一覧): プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / 慣性シューティング イネルシア - プチコン4でエクセリオン風ゲーム / フルーツ好きのアルパカさん - プチコン4で物理演算系ジャンプアクションゲーム / DOTOWN画像一覧表 ミニゲーム付き (プチコン4) / ...(記事連続表示)

ゼルダの伝説 ブレス オブ ザ ワイルド - Switch
ゼルダの伝説 ブレス オブ ザ ワイルド - SwitchをAmazon.co.jpでチェック

草津国際スキー場

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2018年1月7日
草津国際スキー場昨日、今日と家族3人で草津国際スキー場に…、と言いたいところですが、息子が直前になって「部活動を優先したい」ということでドタキャンとなり、久しぶりに妻と2人の一泊旅行でスキーに行ってきました。上野から特急電車に乗り、長野原草津口でバスに乗り換えて草津温泉に行くルートです。よくよく考えると、練馬駅から直接草津温泉に行く路線バスがあるので、こちらの方が楽だったのですが、特急列車での旅行は旅情があってこれはこれで良かったです。

宿泊は草津ナウリゾートホテルで、草津国際スキー場から近いところにあります。ただ、ホテル到着が午後1時前だったのですが、チェックインが午後3時からだったため、部屋で着替えたり荷物を置いたりすることができませんでした。フロントに施設の場所を確認しつつ、ここからはパズルを解くようにスキーの準備を進めました。

【手順】ホテルのフロント→荷物を全部持ってホテル館内のゲームセンターの奥にある簡易更衣室(狭い)で着替え→荷物を全部持って別の建屋のスキーレンタル店で先に送っておいたスキー板の受け取り→スキー板とストックをスキーケースから出してスキーレンタル店前のスキー立てに立てかけ→スキーケースをスーツケースに入れて荷物を全部持ってフロントに行く→館内はスキー靴で歩けないため普通の靴をクロークにあずけると館内を裸足で歩くことになってしまうことが判明→フロントから離れたところにあるホテルの別の出入り口からスリッパを取ってきて普通の靴をスーツケースに入れて荷物をクロークに預ける→フロントから離れたところにある出入り口でスキー靴に履き替えてスリッパを置いておく→スキー板とストックをレンタルスキー店前まで取りに行く→ホテル前に戻って草津国際スキー場行きのシャトルバスを待つ…

レンタルスキー店に靴を預けられるサービスがあるのを最初から知っていればもう少し効率的に動けたのですが、いずれにしてもこのあたりの情報を分かりやすくするか、流れを簡素化するかしてほしいです。部屋や食事や温泉やシャトルバスのサービスは大変満足できるものだったのでなおさらです。

草津国際スキー場は日本で最初にリフトがかけられたスキー場として知られています。標高は一番低いベース付近でも1245m、トップは2171mで、群馬県内のスキー場としてはトップレベルの雪質と言えます。

草津国際スキー場: 夕方の天狗山ゲレンデと温泉街
[ 夕方の天狗山ゲレンデと温泉街 ]

一日目は小雪が舞う中のスキーでしたが、「強風で止まることが多い」と言われる白根火山ロープウェイ(=ゴンドラ)は動いていました。トップの本白根第2ロマンスリフトは強風で止まっていたものの、振子沢コース~しゃくなげコース~天狗山ゲレンデのロングランを楽しむことができました(全長6000m超)。ロープウェイ山頂駅付近以外は緩斜面でしたが、狭い所も多く注意が必要です。スキーの滑りを楽しむよりも、谷間のコースの独特な雰囲気や、温泉の匂いなども感じながら、観光気分で楽しんだ方が良い感じです。



一日目の夜はホテルでバイキングの夕食を取った後(色々と料理を選べて味も美味しかったです)、名物の湯畑も観光してきました。夜の湯畑はライトアップが綺麗でした。

草津温泉: 夜の湯畑
[ 夜の湯畑 ]

二日目の天気は晴れ。でも風が強く、残念ながら白根火山ロープウェイが運休でした。朝一の時点ではその下の殺生(せっしょう)クワッドリフトも運休だったのですが、風が弱まったことから11時過ぎに動き出して、それなりに角度のある青葉山ゲレンデ(最大斜度25度)での滑走も楽しめました。





ベース正面にある「草津名物」と言われる天狗山大斜面(最大28度、不整地)も何回か滑ってみました。ただ、私はあまり不整地が得意ではないのと、歳のせいでスピードを出して転ぶことのリスクも大きいことから、いずれも板のずらしを使いながらゆっくり目に滑りきりました。



1日目は午後だけ、2日目は午前だけと、スキーの時間は短かったですが、やはり2日目の天気が良かったこともあって、良い印象で現地の滞在を終えました。帰りは草津温泉バスターミナルで近くで美味しい山菜そばを食べて、お腹いっぱいな状態で草津温泉を後にしました。




家族でお出かけ(リンク一覧): ベルーナドーム(西武ドーム)で西武x楽天戦 / 東京競馬場の指定席で初観戦 / 色々な国の料理を楽しむ第7弾 - ウズベキスタン料理サマルカンド・テラス(高田馬場) / 5年ぶりの中山競馬場 / 一泊二日の出雲旅行 / ...(記事連続表示)

関連カテゴリー: スキー関連記事, 家族でお出かけ

【草津温泉】 草津名湯の湯・濃縮温泉 (天然温泉濃縮液)500ml
【草津温泉】 草津名湯の湯・濃縮温泉 (天然温泉濃縮液)500mlをAmazon.co.jpでチェック

あけましておめでとうございます。(2018)

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2018年1月1日
あけましておめでとうございます。(2018)2018年の始まりです。例年同様、家族の健康を最重要としつつも、今年も昨年まで続けてきた以下のことを続けてレベルアップができればと思っています。

・ランニング - 週2回のペースで走る。フルマラソン参加。
・スキー - 色々なスキー場に行く。GoProで動画撮影&YouTubeにアップ。
・カメラ - Panasonic LUMIX DMC-TX1で写真を撮る。PIXTAにアップ。
・英語 - YouTubeとNetFlixでリスニング学習。Kindleで洋書を読む。
・ブログ&プログラム - ブログは今まで通り続ける。Pythonの学習を進める。

基本的に2014年からほぼ同じ内容です。ただ、ランニングではフルマラソン参加、スキーではGoPro、英語ではYouTubeとNetFlix、あとPythonの学習と、新しい要素も加えています。

そう言えば、年末は年賀状を書くことができなかったのですが、頂いた年賀状には返信するようにします。遅れてすみません。

そんな感じで、今年もよろしくお願いします。



ニュースな記事(リンク一覧): マイコン博物館(青梅)訪問 / あけましておめでとうございます。(2025) / 2024年は平穏な年でした / ALL ABOUT マイコンBASICマガジン Ⅲ(ベーマガイベント) / Googleから居住者証明書を求められて / ...(記事連続表示)

2018世界はこうなる The World in 2018 (日経BPムック)
2018世界はこうなる The World in 2018 (日経BPムック)をAmazon.co.jpでチェック

2017年は1061km走りました

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月31日
2017年は1061km走りました右の画像はStravaの画面の一部をキャプチャーしたものです。GPSの誤差などもあり、正確な数値とは言えないかも知れませんが、いずれにしてもStrava上は2017年の一年間で1061km走ったことになっています。

昨年までは週1回5km~10km程度のランで、年間トータル350~380km程度でした。今年は基本週2回のランで、1回で20km超を走ることもあり、距離が大幅に伸びました。ちなみに、ランニング回数が「180回」となっていますが、ウォームアップランや「1km走x6回」などもカウントしてしまっているので、見た目の回数は多くなってしまっています。

まあ、これだけ走っているので、ベストタイムも更新しています。5kmは22分、10kmは46分、ハーフマラソンは1時間49分55秒で、いずれも今年のうちに記録しました。5kmと10kmは春以降更新していませんが、体重を少し落とさないと厳しいかも知れません。ちなみに、これだけ走っていても体重は減るどころか、春から1~2kg増えたりしています…。

また来年も石神井公園や皇居がベースになると思いますが、その他にも観光半分で色々な所を走ってみようと思います。



ランニング関連記事(リンク一覧): GARMIN(ガーミン) Forerunner 965 / ASICS GEL-KAYANO 30 (ゲルカヤノ30) エクストラワイド / 白馬スノーハープクロスカントリー大会2024&上田 / 白馬スノーハープクロスカントリー大会2023&馬籠 / 台風2号による大雨で大阪で足止め→信州安曇野ハーフマラソン辞退 / ...(記事連続表示)

GARMIN(ガーミン) ランニングウォッチ GPS 心拍計 VO2Max ライフログ 50m防水 ForeAthlete 235J ブラック×レッド 【日本正規品】 FA235J 37176H
GARMIN(ガーミン) ランニングウォッチ GPS 心拍計 VO2Max ライフログ 50m防水 ForeAthlete 235J ブラック×レッド 【日本正規品】 FA235J 37176HをAmazon.co.jpでチェック

Nintendo Switch スーパーマリオ オデッセイセットを購入

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月28日
Nintendo Switch スーパーマリオ オデッセイセットを購入何ヶ月も前に「スーパーマリオ オデッセイ」のデモ画面を見た時から、「Nintendo Switchは絶対に買おう」と思っていました。しかし、Switchは発売からしばらくの間、品薄の状態が続いてしまい、転売屋が価格を大きく釣り上げていました。さすがに普通よりも高いお金を払ってまで欲しくは無かったので、その間ずっと待っていたのですが、クリスマス前あたりから徐々に価格が下がってきました。一昨日の時点で「Nintendo Switch スーパーマリオ オデッセイセット」が定価の41,018円(税込)まで下がったので、ようやく購入することにしました。Switchとスーパーマリオオデッセイをそれぞれ単体で購入した方が若干安くなるのですが、ちょうどキャリングポーチも欲しかったので、「これでいい」ということになりました。

テレビとの接続は付属のHDMIケーブルを差し込むだけです。アカウントの作成など、少し面倒な所はありましたが、初期設定は時間や手間がかかるものではありませんでした。

早速、スーパーマリオオデッセイをプレイしてみました。世間の評判通り、素晴らしい仕上がりのゲームです。映像もものすごく綺麗です。ハードウェアの進歩があるのももちろんですが、ここまでの世界観を作り上げるのに、どれだけの人がどれだけの労力で携わってきたんだろうと思ってしまいました。

スーパーマリオ オデッセイ(1/1)

スーパーマリオ オデッセイ(1/2)

私はWiiのスーパーマリオギャラクシーは1も2もクリアしたのですが、操作感覚が似ているのでオデッセイの方もあまり迷わずに済んでいます。

コントローラー(Joy-Con)には画面をキャプチャーできるボタンがあり、さらにその画像をFacebookやTwitterへ共有することも可能です。ちなみに、キャプチャーボタンを長押しすると動画も撮れます。動画はキャプチャーボタンを押した後30秒ではなく、押す前30秒の保存ができます。ということは、普段のプレイから動画が保存されているということなのでしょうね。

まだ他のソフトは買っていませんが、とりあえずゼルダだけは購入が確定しています。あと、Switchでファミスタは出ないですかね?



ニンテンドー関連記事(リンク一覧): プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム / ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / 慣性シューティング イネルシア - プチコン4でエクセリオン風ゲーム / フルーツ好きのアルパカさん - プチコン4で物理演算系ジャンプアクションゲーム / DOTOWN画像一覧表 ミニゲーム付き (プチコン4) / ...(記事連続表示)

Nintendo Switch スーパーマリオ オデッセイセット 【オリジナルマリオグッズが抽選で当たるシリアルコード配信(2018/1/8注文分まで)】
Nintendo Switch スーパーマリオ オデッセイセット 【オリジナルマリオグッズが抽選で当たるシリアルコード配信(2018/1/8注文分まで)】をAmazon.co.jpでチェック
コメント:Nintendo Switch スーパーマリオ オデッセイセットを購入
名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2018年1月1日
スーパーマリオオデッセイはSwitch購入から毎日やってましたが、元旦にクリアできました。私が今までにやったゲームの中でも、群を抜いて完成度の高いゲームでした(まあ、私自身あまり最近のゲームをやっていないということもありますが)。特にニュードンク・シティのステージは秀逸です。

スーパーマリオ オデッセイ: ニュードンク・シティ

スーパーマリオ オデッセイ: エンディングのスタッフロール

Python + Pygameの疑似3Dゲーム (ミニゲーム第三弾)

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月28日
Python + Pygameの疑似3Dゲーム (ミニゲーム第三弾)先日作成した疑似3Dサンプルプログラムから、何とかミニゲーム完成まで持っていくことができました。本当に作りたかったのは、スペースハリアーのようなシューティングゲームだったのですが、疑似3Dゲームについては中高生の時にも作ったことがなく、初めてということもあってもう少し簡単なものにしておこうと思いました。ということで、「障害物を避ける」のに趣旨を置いたシンプルなアクションゲームになってしまいました。

以下、動画です。


疑似3Dのゲームとなると「後ろを向いた主人公」の画像が必要になるのですが、手持ちの画像素材集には人間も動物もそのようなものがありませんでした。ネット上のフリー画像もあるのですが、「これだ」という使えそうなものはありませんでした。

その後、アマゾンで立体画像素材を自由に編集できる「アレンジOK!素材集2」というソフトを購入して、ここから主人公キャラを選択することにしました。このソフトは「人物」と「物」の色々な組み合わせが可能で、視点や服装や表情や画風まで自由に変えられます。エンディングの「建築中の家」も同じソフトの画像から切り取っています。

プログラムはこんな感じです。


ファイル一式はこちらからダウンロードできます
※本プログラムやファイルの二次配布や二次掲載はご遠慮ください。個人的なプログラム改造はご自由にどうぞ。ただし、本プログラムに関するご質問等はお受けしません。

今回、プログラム中に以下のものを取り入れてみました。
・三項演算子
・ラムダ式(オブジェクトリストの並び替え)
・スムース縮小(Pygame)
・全画面表示(Pygame)

まず、三項演算子ですが、背景の道路の縞模様を描写するところで使っています。
a = i - 8 - counter % 16 if i - counter % 16 >= 0 else 0
これは一般的な条件式で書くとこんな感じになります。
if i - counter % 16 >= 0:
a = i - 8 - counter
else:
a = 0
三項演算子はPHPやJavaScriptにもあるので馴染みはなくはないのですが、書き方が大きく異るので、少し迷ってしまいました。Pythonの場合、どちらかと言えば英語の文法通りに解釈すると、うまく飲み込める感じです。

ラムダ式はオブジェクトのリスト(character_copy)を、「z座標属性の降順で並び替え」する処理で使っています。
character_copy = sorted(character_copy, key=lambda i: i.z, reverse=True)
これもPHPやJavaScriptで同様の機能がありますが、書き方が大きく異なります。私の場合、並び替えの処理はSQLが真っ先に頭に浮かんでしまい、これを他の言語で表現するのに迷ってしまいます。
ちなみに、この部分は「奥にあるものから手前にあるものにかけて順番に画像を貼り付ける」という、疑似3Dで複数キャラクターを表示する上での「肝」になるところの前処理になります。

スムース縮小処理(Pygame)はタイトル画面のロゴのところで使っています。
image = pygame.transform.smoothscale(image, (c, d))
このメソッドは縮小画像に「複数ピクセルの色の平均化」を行うため、通常の"transform.scale"メソッドに比べて縮小した画像の見た目がより自然な感じになります。ただし、GIF画像には対応しておらず、透明処理可能なものでは24bitか32bitカラーのPNG画像でないと使えません。あと、ストッパー、蛙、鳥の小さめのキャラクターに使用すると、周辺に白いモヤモヤが発生してしまい、これはこれで少し見苦しいので、こちらはsmoothの付かない方のメソッドで処理しています(画像もGIFです)。タイトルロゴについてはもともと白の縁取りがあり、白いモヤモヤも気にならないのでsmoothの付いている方で処理しています。

全画面表示(Pygame)はある方のブログ記事を参考にしました。F11キーで全画面表示のオンとオフを切り替えられます。
screen = pygame.display.set_mode((400, 300), FULLSCREEN)
やはり全画面の方がゲームはやりやすいですね。

今回の疑似3Dゲームで、とりあえずPython + Pygameのミニゲーム作成は一段落、という感じです。次は別のモジュールを使いながら進めていくことになると思いますが、色々とできることが増えてくると嬉しいです。



Python関連記事(リンク一覧): Python + Pygameの疑似3Dゲーム (ミニゲーム第三弾) / Python + Pygameで擬似3Dサンプルプログラム / Python + Pygameのミニゲーム第二弾 『たけのこ狩り』 / Python - リスト内包表記とPygameのスプライト機能 / Pythonの学習とPygameを使ったミニアクションゲーム作成 / ...(記事連続表示)

Pythonゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing)) eBook
Pythonゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing)) eBookをAmazon.co.jpでチェック

光が丘公園初ラン

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月24日
光が丘公園初ラン今日は初めて光が丘公園を走ってみました。我が家も同じ練馬区内にあるものの、行くまでに4km弱の道のりがあるので、なかなか行けずにいました。今日は何となくのんびりと長めの距離を走りたいと思っていたので、石神井公園駅周辺から光が丘公園までの往復(復路で少し寄り道あり)と、光が丘公園内のコース、公園外のコースをそれぞれ1周ずつ走りました。合計約15kmでした。

まずは公園内の周回コースです。距離は約2.8km。私は南側から公園に入ったので、いちょう並木のところからスタートです。前半はテニスコート、野球場、陸上練習用のトラックを横に見ながら、中盤~後半は木々に囲まれたコースになります。「ジョギングコース」と書かれた案内板が随所にあるので、迷うことは無いです。最後にゆるい上り坂があるだけで、あとは最初から最後までほぼ平坦なコースでした。道幅も広くて雰囲気も良く、うちの近くにあったら毎週走りたい位です。

続いて公園外の周回コースです。距離は3kmちょっと。歩道がやや狭く、二人横に並んで走ると道を塞いでしまいます。こちらもアップダウンの無い平坦なコースで、特筆すべきことはありません。少なくとも皇居より人が少なく、走りやすく感じました。

やはり交差点の無い長めの周回コースを走るのは気持ちの良いものです。私がよく走る石神井公園は、やや急なアップダウンや視界の悪いところもあるので、今度15kmを超えるような長距離を走る場合には、また光が丘公園まで出向いてみようと思います。



ランニング関連記事(リンク一覧): GARMIN(ガーミン) Forerunner 965 / ASICS GEL-KAYANO 30 (ゲルカヤノ30) エクストラワイド / 白馬スノーハープクロスカントリー大会2024&上田 / 白馬スノーハープクロスカントリー大会2023&馬籠 / 台風2号による大雨で大阪で足止め→信州安曇野ハーフマラソン辞退 / ...(記事連続表示)

練馬本 最新版 (エイムック 3853)
練馬本 最新版 (エイムック 3853)をAmazon.co.jpでチェック

Python + Pygameで擬似3Dサンプルプログラム

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月19日
Python + Pygameで擬似3Dサンプルプログラム本当はPythonでWebや機械学習などの方向に進もうと思っているのですが、Pygameでのミニゲームやサンプルプログラムの制作が楽しく、ここから中々抜け出せないでいます。ただ、楽しみながらもPythonの基本も学べてはいるので、まあ急がずにマイペースで続けていこうと思います。

先日、「Pythonゲームプログラミング 知っておきたい数学と物理の基本」というKindle本を購入したところ、この本に疑似3Dの視点と描写について分かりやすい解説がありました。私は高校生の時に「スペースハリアーのようなゲームが作りたい」と思ったことがあり、キャラクターの拡大・縮小や2D上の座標決めなど、色々とやってみたのですが、結局うまくいかずにそのまま時が過ぎてしまいました。あれから30年近く経ち、今になってようやく基本的な理論が理解できたのですが、考えていたよりも難しいものではなく、「何であの時に分からなかったんだろう?」と思ってしまいました。

過去のことを後悔しても仕方ないので、早速サンプルプログラムを作ってみることにしました。おおよそ事前に考えていたような内容のプログラムのまま、おおよそ思った通りに動いてくれました。

ということで、まずは動画です。


プログラムはこんな感じです。蛙はカーソルキーで上下左右、ZキーとXキーで前後に動きます。C、V、B、Nの各キーで視点の角度を変えることもできます。
""" 3d.py """

import pygame
import sys
from pygame.locals import *

pygame.init()
pygame.key.set_repeat(5, 5)
SURFACE = pygame.display.set_mode((400, 300))
FPSCLOCK = pygame.time.Clock()
pygame.display.set_caption("3D")

#【メモ】
#3D座標は x = 0, y = 0が画面の中心で、z = 0が画面の手前。キャラクターのx, y座標はキャラクターの中心。
#大きさ調整は、自分のz座標を-10、スクリーンのz座標を0(自分とスクリーンの距離10)とした場合、キャラクターのz座標が20の場合には3((20+10)÷10)で割り、30の場合には4((30+10)÷10)で割る計算。
#キャラクターの座標は、自分とスクリーンの距離を10とした場合、キャラクターのz座標が30の場合には、画面の中心の座標から、xを4((30+10)÷10)で割ったものを足し、キャラクターの大きさの半分を4((30+10)÷10)で割ったものをxから引く。yも同様。
#視点の調整は「係数 * z」を x や y に足す(その x や y をさらに上記の通りz座標の奥行きに合わせて割り算する)。

def location_in_view(x1, y1, z1, adj_x, adj_y, size_x = 0, size_y = 0):
""" 3D座標から2D上の座標算出 """
x2 = int((x1 + adj_x * z1) / (z1/10 + 1)) + 200 - int(size_x * 0.5 / (z1/10 + 1))
y2 = int((y1 + adj_y * z1) / (z1/10 + 1)) + 150 - int(size_y * 0.5 / (z1/10 + 1))
return (x2, y2)

def size_in_view(z1, size_x, size_y):
""" 3D座標から2D上のサイズ算出 """
size_x2 = int(size_x / (z1/10 + 1))
size_y2 = int(size_y / (z1/10 + 1))
return (size_x2, size_y2)

def main():
""" メインルーチン """
#変数初期設定
a, b, c, d = 0, 0, 0, 0
x = 0
y = 100
z = 0
scroll_count = 0
adjust_x = 0
adjust_y = 0
frog_image = pygame.image.load("frog.gif")
frog_size = 100
shadow_image = pygame.image.load("shadow.gif")
shadow_size = 100

while True:

#画面塗りつぶし
SURFACE.fill((0,0,0))

#ウィンドウ閉じるボタン
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()

#キー入力判定
pressed = pygame.key.get_pressed()
if pressed[K_LEFT] and x > -150:
x -= 20
if pressed[K_RIGHT] and x < 150:
x += 20
if pressed[K_UP] and y > -100:
y -= 20
if pressed[K_DOWN] and y < 100:
y += 20
if pressed[K_z] and z > -0:
z -= 2
if pressed[K_x] and z < 200:
z += 2
if pressed[K_c] and adjust_y > -10:
adjust_y -= 0.2
if pressed[K_v] and adjust_y < 10:
adjust_y += 0.2
if pressed[K_b] and adjust_x > -10:
adjust_x -= 0.2
if pressed[K_n] and adjust_x < 10:
adjust_x += 0.2

#背景スクロール
scroll_count += 1
if scroll_count > 7:
scroll_count = 0
for i in range(0-scroll_count, 200-scroll_count, 8):
a, b = location_in_view(-200, -150, i, adjust_x, adjust_y)
c, d = size_in_view(i, 400, 300)
pygame.draw.rect(SURFACE, (150-int(i/1.5), 150-int(i/1.5), 180-int(i/1.5)), (a, b, c, d))

#影表示
c, d = size_in_view(z, shadow_size, shadow_size)
shadow_image_3d = pygame.transform.scale(shadow_image, (c, d))
shadow_image.set_alpha(80)
a, b = location_in_view(x, 145, z, adjust_x, adjust_y, shadow_size, shadow_size)
SURFACE.blit(shadow_image_3d, (a, b))

#蛙表示
c, d = size_in_view(z, frog_size, frog_size)
frog_image_3d = pygame.transform.scale(frog_image, (c, d))
a, b = location_in_view(x, y, z, adjust_x, adjust_y, frog_size, frog_size)
print (a, b)
SURFACE.blit(frog_image_3d, (a, b))

#画面アップデート
pygame.display.update()
FPSCLOCK.tick(30)

if __name__ == '__main__':
main()


ファイル一式はこちらからダウンロードできます
※本プログラムやファイルの二次配布や二次掲載はご遠慮ください。個人的なプログラム改造はご自由にどうぞ。ただし、本プログラムに関するご質問等はお受けしません。

今回はキャラクターが1つだけなので、重ね合わせの処理が単純でしたが、いざ複数のキャラクターが動くようなゲームを作るとなると、そのあたりを考慮しながら作り込んでいく必要があります。

頭にあるのは「オブジェクトをリスト化して、そのオブジェクトのリスト全体をコピーして、コピーした方のリストをZ座標で並び替えて、Z座標が奥にあるものから手前にあるものにかけて描画していく」というアイデアです。Pythonそのものも学習の意味も兼ねて、また少し時間をかけて作り込んでいこうと思います。



Python関連記事(リンク一覧): Python + Pygameの疑似3Dゲーム (ミニゲーム第三弾) / Python + Pygameで擬似3Dサンプルプログラム / Python + Pygameのミニゲーム第二弾 『たけのこ狩り』 / Python - リスト内包表記とPygameのスプライト機能 / Pythonの学習とPygameを使ったミニアクションゲーム作成 / ...(記事連続表示)

Pythonゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing)) eBook
Pythonゲームプログラミング 知っておきたい数学と物理の基本 (Future Coders(NextPublishing)) eBookをAmazon.co.jpでチェック

2017年を振り返って

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2017年12月17日
2017年を振り返って2017年もあと2週間を残すだけとなりました。毎年この時期には「一年のまとめ」のような事を書いていますが、今年も例年通り記録として残しておくことにします。

我が家の行事としては、富良野スキー旅行、息子の小学卒業&中学入学、夏の福岡旅行などがありましたが、突然生活が変わってしまうような大きな出来事はありませんでした。まあ、何か悪い事が起きるよりは、日々平凡な生活を送れることだけでも喜びを感じてしまいます。それだけ歳を取ってきたということなのでしょう。

私自身、ここ最近は「新しいことをゼロから始める」ということはやっていません(ドローンを少しだけやりましたが…)。ただ、今までに自分が積み重ねてきたことの「更なるレベルアップ」については、中年になってしまった今でも心がけています。私が仕事以外で継続的にやっていることを挙げると、古い順からスキー、英語学習、Web制作&管理、カメラ、ランニングとあります。それぞれ今年はこんな感じの一年でした。

■ スキー
2月にGoPro HERO5 Sessionを購入して動画撮影をやり始めました。ランニングで養った体力を使って、山頂からベースまで無理なくノンストップ滑走ができるようになったこともあり、早速富良野スキー場でもいくつか動画を撮影してYouTubeにアップしています。Panasonic DMC-TX1での写真撮影も加えて、「観光」の要素が高くなりつつありますが、いつかは草レースのようなものにも参加したいと思っています。いずれにしても安全な滑りだけは常に心がけたいです。

■ 英語学習
ここ最近は仕事の上で英語で困るような場面はほとんど無くなりましたが、今でも字幕なしの洋画や、英語ネイティブ同士の会話には置いてきぼりを食らうことが多いです。この辺りを何とかしようと思い、1月から毎日通勤時にYouTubeで英語の動画を見るようになりました。週ごとにテーマを変えて学習していて、具体的にはこんな感じでした。
1/23ランニング、1/30スキー、2/6カメラ、2/13化学&物理、2/20病気&体、2/27ゲーム、3/6車&バイク、3/13料理…
もともとリスニング学習が目的だったのですが、YouTubeから新たな知識を得ることも多かったです。例えばドローン、電気自動車、アメリカの政治&経済、仮想通貨などです(もちろん全て英語の動画です)。肝心のリスニング力については「1年前よりは少しマシになったかな…」程度ですが、YouTubeでの学習は面白いので、これからも続けていこうと思います。

■ Web制作&管理
今年は新しいホームページは開設せず、全テキストファイルをUTF-8化する作業があった以外は、淡々と本ブログを続けているだけでした。ただ、知人のお誘いもあって、先月からPython(コンピューター言語)の学習を始めています。今のところはPygameモジュールを使ったミニゲームを2本作っただけで、Webの方に展開していませんが、来年には何か作っていこうと思っています。AI・機械学習の勉強も進めていきます。実は、JavaScript+GPSで「ミニRunKeeper」「ミニStrava」のようなランニングアプリもどきを作ろうと思ったりもしましたが、こちらは今後も実現するのか不透明です。

■ カメラ
上でも書きましたが、昨年3月に購入したPanasonic DMC-TX1を中心に使っています。写真は全てNAS(サーバー)に保管していますが、一部をブログにアップしたり、PIXTAに投稿したりしています。手軽なグループ写真などはスマートフォンのカメラで十分ですが、やはり風景の撮影などでは、DMC-TX1の1インチセンサーが威力を発揮してくれます。2013年に購入したEOS Kiss X7の使用頻度が極端に落ちているものの、画質はこちらの方が上なので手放すことは無いと思います。これ以上の性能のカメラは、自分にはオーバースペックで使いこなせそうにないです。

■ ランニング
昨年までは土日のどちらかで5~10km走るだけでしたが、ある知人グループの影響を受けて、1月下旬から週2回走るようになりました。おかげで10kmランで50分を切るのが難しくなくなり、11月に2年8ヶ月ぶりに参加したハーフマラソンでも、10分近くタイムを縮めることもできました。年間のランニング距離も、今までは370km前後だったのですが、今年は1000kmを超えてしまいました。今年はランニングを通じて多くの方と知り合うことができて、「人との繋がり」という点でも充実していました。ランニングは当初「スキーのトレーニング」という位置づけでしたが、今後も時折レースに参加していきたいと思います。来年はついにフルマラソンもあるかも…?

そういえば、今年の始めに「甲種危険物取扱者試験の合格」を目標として掲げましたが、こちらは断念しました。もともと通勤時に勉強する予定だったのですが、上記のYouTube学習を優先するようになったのと、「個人的に実用面であまりメリットがないかな…」と思い始めたのが要因です。まあ、時間は限られているので、「トレードオフ」ということで仕方ないとは思っています。

そんな感じで2017年もそれなりに充実した1年でした。来年以降も健康には気をつけつつ、「更なるレベルアップ」を目指していこうと思います。



ニュースな記事(リンク一覧): マイコン博物館(青梅)訪問 / あけましておめでとうございます。(2025) / 2024年は平穏な年でした / ALL ABOUT マイコンBASICマガジン Ⅲ(ベーマガイベント) / Googleから居住者証明書を求められて / ...(記事連続表示)

週刊エコノミスト 2017年12月26日号 [雑誌]
週刊エコノミスト 2017年12月26日号 [雑誌]をAmazon.co.jpでチェック


※該当の記事タイトル一覧はリンク一覧から参照できます。