ゲーム開発

【Pyxel】Pythonでレトロゲームを作ろう! Day 2 -マウス操作-

Pyxelでレトロゲームを作る2

こんにちは!

くるる
くるる
人気フクロウの”くるる”@kururu_owl だよー
はやぶさ
はやぶさ
現役エンジニアの”はやぶさ”@Cpp_Learningです

前回こんな記事を書きました↓

Pyxelでレトロゲームを作る
【Pyxel】Pythonでレトロゲームを作ろう! Day 1 -画像の扱い方-こんにちは! 前回こんな記事を書きました↓ https://cpp-learning.com/object-...

本記事は『Pythonでレトロゲームを作ろう!』シリーズの”Day2”です!

くるる
くるる
待ってました!
はやぶさ
はやぶさ
今日も楽しく勉強しましょう!

【Day 2】Pyxelでレトロゲームを作ろう!

今回は猫を動かすよー

くるる
くるる
おぉ~どうやって猫を動かしてるの?

今回はマウスの動きに連動して猫が動くようにしてみました!

くるる
くるる
マウスが猫を動かす…ワロタ!

何がツボに入ったのか、笑い転げる”くるる”ちゃんが今日も可愛い(*・ω・)ノ♪

【Pyxel】マウス操作

Pyxelでマウスを扱うのは、とても簡単です!

”day 1”で作成したソースコードに14行目のコード追加するだけでマウスの矢印を表示させることができます!

こんな感じ↓

Pyxelとマウス操作

14行目のコードの引数を”False”にすると矢印を非表示にできます。

ただ、何もコードを書かなくてもデフォルトで”False”になっているので…PyxelでAppを実行した時点でマウス操作ができます

くるる
くるる
じゃあコードを何も書かなくてもマウス操作ができて、矢印を表示させたい場合には14行目の”True”コードを書けば良いね!

正解!

マウス操作で猫を動かす

Pyxelを使えば、マウスの座標を簡単に取得することができます。

・mouse_x, mouse_y
現在のマウスカーソル座標

引用元:pyxel|GitHub

なので、猫画像を(x,y)座標をマウス座標に変更するだけで、マウスの動きに連動して猫を動かすことができます!

ソースコードはこちら↓

基本的には”day 1”で作成したソースコードにcat関数を追加しただけです。(本質ではない細かい変更については説明を割愛します。)

くるる
くるる
数行のコードを追加するだけで、好きなキャラをマウスで操作できるのか…pyxelすごい♪
くるる
くるる
ん?cat関数内の条件分岐は何をしているの?
はやぶさ
はやぶさ
マウスの左クリックで猫の向きを変えるコードだよ

・btn(key)
keyが押されていたらTrue、押されていなければFalseを返す ( キー定義リスト

引用元:pyxel|GitHub

キー定義リストの一部は以下の通り↓

Pyxelのキー定義リスト

マウスの左クリックボタンは”MOUSE_LEFT_BUTTON”と定義してあります。

なので、ソースコード39行目でマウスの左クリックが押されたかを判断し、「押された」=「True」のとき猫が向きを変えます。

くるる
くるる
マウスのクリック入力まで!はやぶさ先生すごい♪
はやぶさ
はやぶさ
いやいや。スゴイのはpyxelだよ!マウスを簡単に扱えるからねー
くるる
くるる
はやぶさ先生よりpyxelの方がすごい♪

ついでに説明するとupdata関数に書かれたコードはキーボードの”Q”が押されたかを判断し、「押された」=「True」のときpyxelアプリを終了させます。

くるる
くるる
”btn”と”btnp”て何が違うの?
はやぶさ
はやぶさ
APIリファレンスに書いてあるよー
PyxelのAPIリファレンス

引用元:pyxel|GitHub

pyxel”キー入力用コード”を作成するフローは以下の通りだよ!

【Pyxelの”キー入力用コード”作成フロー】

  1. どの条件で何をしたいか考える
  2. キー入力用の”API”が用意してあるので、好みの入力方法を採用
  3. マウスやキーボードの”入力キー”が用意してあるので、キー定義リストを参照し、使いたい”キーの定義(名前)”を確認

❶を考えるときに悩む人がいるけど…

くるる
くるる
シューティングゲームみたいに”キー入力で攻撃”できるようにしたいなー

”くるる”ちゃんみたいにラフに考えて良いと思うよ(*・ω・)ノ♪

ソフトの作成方法って色々あるけど、思いついたアイデアをどんどん実装して、アイデアを膨らませながらブラッシュアップするのも1つの手だよー

はやぶさ
はやぶさ
あまり悩まず楽しくプログラミングしてほしいなぁ
くるる
くるる
はーい♪どんどん手を動かしながら楽しくゲーム作りまーす
  • Pyxelに限らず、APIリファレンスを確認しましょう。
  • Pyxelではインターフェース(マウスやキーボード)を簡単に扱えます。

クラス化しなくて良いの?

うーん。。

くるる
くるる
猫ってオブジェクトだよね?
くるる
くるる
以下の記事では、オブジェクトからクラスを考えたけど…今回はしなくて良いのかな?
python(pygame)でゲームを作る
【Python】ゲームソフト開発を題材にしたオブジェクト指向入門ゲームソフト作成を題材にした「オブジェクト指向」の入門記事を書きました。オブジェクト図/クラス図の書き方や考え方のポイントも説明した実践的な内容になっています!ソフトウェア設計やソフトウェア開発を学びたい人にオススメの記事です!...
はやぶさ
はやぶさ
良い質問だね!

好みもありますが、個人的にクラス化した方が良いと思います。

なので…次回は【catクラス】を考えてみましょう!

クラス可するメリットなんかも説明するね(*・ω・)ノ♪

くるる
くるる
楽しみ!次回はよー
スポンサーリンク

おわりに

『Pythonでレトロゲームを作ろう!Day 2-マウス操作-』について説明しました。

キーボード入力についても簡単に説明したので、正確には-インターフェース入力-が正しいサブタイトルかな(?)

ゲーム開発(pyxelの使い方)を題材にして、楽しくプログラミングの勉強ができると良いなーとか考えながら、シリーズ記事を書いています。

本記事がシリーズの”Day2”で「猫(好きなキャラ)をマウスで操作する方法」についてでした。

くるる
くるる
動きがあるとゲームっぽくて楽しいね!

次回は猫をクラス化して、柔軟なソースコードの作り方を説明するよー

本記事楽しかったかな?次回もお楽しみに~

Python+ゲーム関連の本(Pyxelの本は2018/12/15時点では存在しません)
Amazonギフト券配送タイプの購入がお得!
amazonギフト券

Amazonプライム会員なら、Amazonギフト券(配送タイプ)5,000円以上を購入すると最大1,000ポイント還元

配送タイプの購入で500ポイント・プレゼントした相手が登録するとさらに500ポイント。

家族のアカウントに登録すれば実質20%還元

6/25~7/16まで。急げ!!

 

キャンペーンの詳細をみる

Amazonプライム無料体験中でもOK!