Processing 入門
26.潜水艦7(完) スコアとタイトル
今回は「潜水艦6 水柱とゲームオーバー」の続きです。
潜水艦の撃破ゲームも今回で終了です。
難しいところもあったと思います。そのようなところも慣れてくれば
簡単に作れるようになります。
どんどんプログラミングしましょう。
敵の爆弾を止めよう
ゲームオーバーになった後も、敵の爆弾が発生し続けます。
これは変なので止めます。
変数 gseq を確認すれば、ゲーム中かゲームオーバーなのか分かるのでこれを利用します。
ゲーム中のみ爆弾を発射するようにします。(150-152 行目)
実行して爆弾が止まることを確認しましょう。
スコアを入れよう
スコアを入れましょう。
一隻爆破するごとに 100 点の得点とします。
スコアの加算は、潜水艦と爆弾の当たり判定で行います。(142 行目)
スコアの表示 scoreDisp を呼び出すタイミングは、表示優先を高くするため
描画関連の一番最後にします。(70 行目と 77 行目)
爆破のときスコアが加算されていくことを確認しましょう。
タイトル画面を作ろう
タイトル画面を作ります。
と言っても画像を1枚表示して、なにかキーが押されたときゲームを開始するようにするだけです。
1 行目、変数 title の宣言をします。
60 行目、行を削除せずコメントにして残します。
もしテストプレイでタイトルの表示はいらない、と思ったらコメントを外します。
63 行目、変数 mcnt が 60 以上か調べています。
これは何もさせない待ち時間を作るためです。
タイトルに限らず、画面を切り替えるところで入れることをおすすめします。
切り替わった画面を見せることも大切なことです。
218 行目、変数 mcnt をここでも調べています。
表示(63 行目以降)とキーの受付を同期させるためです。
220 行目、変数 mcnt は他の場面でも使っているので初期化します。
タイトルからゲームプレイへ移ることを確認しましょう。
リトライを入れよう
ゲームオーバーになった後、なにかキーを押すことでタイトルに戻れるよう
リトライ機能を入れましょう。
表示や点滅の方法は、タイトルのときと同じです。
待ち時間を 120 としているのは、GAME OVER をしっかり見てもらうためです。
93 行目と 223 行目でタイミングを同期させています。
これまでしっかりと初期化処理 gameInit を作ってきたので、
リトライさせるのは簡単です。
ゲームオーバー中にキーが押されたら gameInit を呼ぶだけで OK です。
ゲームオーバーでキーを押したら、タイトルに戻るか確認しましょう。
全ソースコード
改造しよう
「 潜水艦を撃破するゲーム 」はこれで完成です。
お疲れさまでした。
画像を使ったプログラムで、それなりに大きくなりましたね。
しかし内容をみると、プレイヤーの爆弾、敵本体、敵の爆弾と
みんな同じような仕組みで動いています。
この仕組みさえ覚えてしまえば、色々な場面で使えると思います。
さて毎回同じことを言いますが、プログラミングは続けないと身に付きません。
新しい課題を探すか、今回の課題を改造してみてください。
改造の例を挙げておきます。
・ハイスコアの表示を行う
・深い位置にいる潜水艦ほどスコアを高くする
・高速で移動する特別な潜水艦を時々出す
・1発では沈まない耐久力のある潜水艦(拡大表示)を出す
・時間が経つにつれ、敵や爆弾の量を多くする
・時々、フォーメーションを組んだ複数の潜水艦を出現させる
などなど、挑戦してみてください。