初心者のためのゲームプログラミング入門

プログラミングとゲームの杜

初心者のためのプログラミング入門 & ゲームプログラムの作り方入門

Small Basic 入門

24.メテオゲームを作ろう その5

 

メテオゲームを作ろう その4 ] の続きです。

 

ゲームオーバーの処理を作ろう

前回、自機と隕石の当たり判定を入れました。
次は隕石と当たったら自機が爆発してゲームオーバーという流れを作っていきます。

 

新しくサブルーチンを追加

 

プレイ中のサブルーチン gameloop() から抜けたあとゲームオーバーにするため
4行目に gameover() を追加します。

56行目、デバッグ用のメッセージ表示は必要ないので削除します。
73行目、変数 state を gameover に変えることで、51行目の while ループから
抜けます。
つまり、自機と隕石が当たったら gameloop() から抜ける訳です。

 

ゲームオーバーの処理を追加

 

82行目、プレイ中ではないとき、自機を動かせないようにラベル endOnMouse
にジャンプさせます。(ジャンプ先は 92行目)

95行目以降、ゲームオーバー処理となります。
今はまだ空ループを作っただけです。なにもしません。

プレイ中からゲームオーバーへの流れは、変数 state で制御されています。
変数 state と while の使い方に注目してください。

 

 

爆発の演出を入れよう

ゲームオーバーのときに自機が爆発する演出を入れます。
1枚の爆発の絵を拡縮させるだけの簡単な演出です。

 

爆発の演出を入れる

 

25行目、爆発の絵を登録します。
通常は見えないように隠しておきます。
また SetOpacity を使って半透明に設定します。
0から100までの間で不透明度を指定します。0で完全に透明になります。

 

爆発の拡縮演出を入れる

 

ここから拡縮の演出です。
101行目、隠していた爆発の絵を表示します。
変数 zcnt は拡縮を制御するためのものです。
zcnt = 0 のとき、自機の座標(px,py)に乱数を足して爆発の座標としています。
調整に使っている数値(30,-45,-20)は適当です。
プログラムを組んだあとで実行させながら数値を決めました。

112-116行、zcnt を使って拡縮のくり返しをしています。
116行目で指定している数も実行させながら決めました。

 

実行結果は次のようになります。

爆発のシーン

ちょっと、しょぼいですね。
隕石と当たったらいさぎよく自機を非表示にして、代わりに爆発の拡縮だけでも
いいかもしれません。
自機の爆発する絵を5枚くらい用意して、アニメーション表示にしたら
もっと良い演出になると思います。

 

 

GAME OVER を表示しよう

「GAME OVER」を表示して、クリックしたらゲームを再スタートするようにします。

 

game overを表示する

 

2-6行目、while を使ってループを作ります。
こうすることでゲームオーバーの処理を抜けると、再びゲームがプレイできる
ようになります。
31行目「GAME OVER」
35行目「CLICK ON THE SCREEN」
2つの絵の登録を行ったあと隠しています。
また、表示する座標も決まっているので、ここで設定します。

 

自機の表示をしている

 

ゲーム開始前のサブルーチン start に自機の表示を入れました。(61行目)
今はまだタイトルの表示をしていませんが、このあと必ずタイトルが入ります。
タイトルの時には自機も隠すことになるので、プレイ前に再表示しなければなりません。
このタイミングで行うのがいいでしょう。

 

クリックを促すメッセージの表示

 

変数 mcnt はメッセージ関連のタイミングカウンタです。
60 のときに「GAME OVER」を表示して、120 を超えたとき
「CLICK ON THE SCREEN」が点滅するようにします。

135行目 Math.Remainder(a,b) は a を b で割った余りを算出します。
135行目の場合、0から 59 までの数値が算出されます。
この値が 40 よりも小さいとき msg を表示して、40 以上なら隠しています。
点滅の処理はこのようにして作ります。

141行目、マウスの左ボタンが押されたら変数 state = "title" にしています。
クリックされると 116行目の while ループから抜けます。
150行目以降、表示していたメッセージと爆発、自機を隠しています。

 

ゲームオーバーを表示したとき

 

このような画面になります。
自機と隕石が当たったとしばらくして「GAME OVER」が表示され
さらに少ししてから「CLICK ON THE SCREEN」が点滅し始めます。
点滅と同時にクリックを受け付けていることも確認してください。

クリックした後、メッセージは隠されゲームが再スタートすることも確認しましょう。
次回はタイトルの表示を入れます。