シューティングゲームにおいて体力ゲージを用意しましたが、現状HPが0になってもゲームが継続してしまうので、今回はゲームオーバー処理を追加していきたいと思います。
体力がなくなったらゲームオーバーにする【Python・Pygame】
インデックス変数を使うことで、各シーンを扱いやすくなるようになります。
今回もidxというインデックス変数を宣言してゲームオーバーやゲームクリアシーンを管理するようにしたいと思います。
前提として、敵からのダメージを食らってプレイヤーのHPが0以下になったらゲームオーバーというテキストを画面中央に表示するようにプログラムを変更しました。
基本的に、メイン関数の中でインデックス変数の変動を把握するようにします。
今回の場合は、idxが0ならタイトル画面、1ならばゲームプレイ、2ならばゲームオーバーという状態ですね。タイトル画面についてはまだ画像などの準備が出来ていないので今回は省略。
まずゲーム起動直後は、当然タイトル画面になりますので、idxを0で初期化しておきます。本来ならばキー入力においてゲームプレイ画面に進むので、その処理を記述する必要がありますが、現状強制的にゲームプレイ画面に飛ばすようにしています。
ゲームプレイモードになったら、プレイヤーの移動や敵を出現させて動かすようにします。
体力がなくなったらゲームオーバーですので、プレイヤーの関数内においてHPが0以下かどうかの条件文を追記します。(111行目)0以下になったらidxを2にして212行目の処理に進みます。
ゲームオーバーと画面中央にテキストを表示させて、プレイヤーの移動及び敵の出現をストップします。テキストの表示に関しては、専用の関数を用意したほうが楽なのでdraw_text関数を作るようにします。
指定した座標に文字列の中心が来るようにするため、それぞれの幅と高さの半分の値を引きます。
ゲームを実行するとこんな感じです。次回は、タイトル画面からも遷移できるようにします。