Pyxelでは9個のサンプルが用意されています。
これらのサンプルのソースコードを理解することで、Pyxelでのゲーム開発をどのようにすれば良いのかがわかってきます。
本記事では、そのサンプルについて解説しています。
今回は、7個目のサンプルについて解説します。
07_snake.pyはどんなサンプル?
今回のサンプルはスネークゲームです。
ゲームのルールは、壁や自分自身にぶつからないようにアイテムを取り続けるというものになります。
今回の07_snake.pyは、bgmもついてます。
07_snake.pyのソースコード解説
では、ソースコードの解説をしていきます。
これまで通り、全てのソースコードはここには載せないので、各自エディタで確認してください。
またこれまでに解説した内容については、割愛することがあります。
07_snake.pyの構成
06_click_game.pyでは、Snakeという1つのクラスで構成されています。
Snakeクラスの外に、音楽と効果音を処理するdefine_sound_and_music関数が定義されています。
今回はSnakeクラスについて解説します。
__init__メソッド(コンストラクタ)
これまでと同じように初期設定とpyxel.run(self.update, self.draw)の実行になります。
少しカクカクした動きをさせるためにわざとfpsを20に設定しています。
resetメソッド
ゲームを初期化するメソッドになります。
コンストラクタ実行時、あるいはゲームオーバーになってリスタートする時に実行されます。
updateメソッド
ゲーム更新処理のメソッドです。
3つの分岐があり、ゲームオーバーになっていない限り実行されるのが、
- update_direction
- update_snake
- check_death
- check_apple
の4つのメソッドになります。
キーボードの「Q」を押した時には、ゲーム終了のquit関数が実行されます。
またキーボードの「R」を押した時には、リセットのresetメソッドが実行されます。
update_directionメソッド
ヘビ(プレーヤー)の進む方向を制御するメソッドになります。
どのキーボードが押されたかで、進む方向が変わるようになっていますが、バックはできないように処理しています。
例えば、下に向かっているヘビが上方向に方向転換はできません。
左か右にしか方向転換できないようになっています。
update_snakeメソッド
ヘビの移動を制御するメソッドです。
ヘビはアップル(アイテム)を取ると、どんどんと長くなっていくので、その処理が必要になります。
check_appleメソッド
ヘビがリンゴを取ったかどうかの処理になります。
リンゴを取った場合、スコアを1点追加し、ヘビの長さを1つ長くして、リンゴを新しく生成して、効果音を鳴らす処理になります。
generate_appleメソッド
リンゴを生成するメソッドになります。
check_deathメソッド
ゲームオーバーになるかどうかの判定をするメソッドです。
ヘビの位置情報から判定をしています。
death_eventメソッド
ゲームオーバーになった時のメソッドです。
drawメソッド
ゲームオーバーでない限り以下の処理が実行されます。
- 画面のクリア
- draw_snakeメソッド
- draw_scoreメソッド
- リンゴの描画
draw_snakeメソッド
ヘビの描画になります。
頭と体では違う色が設定されて、描画されています。
draw_scoreメソッド
画面上部にあるスコアを描画するメソッドです。
draw_deathメソッド
ゲームオーバー画面を描画するメソッドです。
まとめ
今回はスネークゲームの07_snake.pyについて解説しました。
音楽と効果音に関する関数については説明を割愛しましたが、スネークゲームの方はロジックとしてわかりやすいものだと思います。
コメント