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

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

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

Small Basic 入門

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

 

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

 

 

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

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

gameoverのサブルーチンを追加

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

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

 

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

83行目、プレイ中ではないとき、自機を操作させないようにラベル endOnMouse にジャンプさせます。(ジャンプ先は 93行目)
96行目以降、ゲームオーバー処理となります。
今はまだ空ループを作っただけです。なにもしません。

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

 

 

爆発の演出を入れよう

自機が爆発する演出を入れます。
8枚の絵を使いアニメーションさせます。

爆発の演出を入れる

26行目、配列 exp に8枚の絵を登録します。
爆発のファイル名は p_explosion1 から p_explosion8 まであります。
変数 i に +1 して 1 から 8 までの文字をつなげています。

 

爆発の拡縮演出を入れる

8枚の絵を順番に表示させます。
104行目で爆発の表示
105行目で表示座標を指定(自機とサイズが違うため補正しています)
106行目 wait
107行目で表示した爆発を廃棄

 

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

爆発のシーン

一瞬、爆発します。
爆発が短いので、もっと長くしたり派手にしてもいいと思います。

 

 

GAME OVER を表示しよう

「GAME OVER」を表示して、クリックしたら再スタートさせます。

game overを表示する

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

 

自機の表示をしている

ゲーム開始前のサブルーチン start に自機の表示を入れます。(61行目)
gameover で隠したので再表示させる必要がありました。
このあとタイトル画面を作ります。
タイトルでも自機は表示しないので、プレイ直前のこの場所に入れるのがいいでしょう。

 

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

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

129行目 Math.Remainder(mcnt, 60) は mcnt を 60 で割った余りを算出します。
つまり 0から 59 までの数値が算出されます。
この値が 40 よりも小さいとき msg を表示して、40 以上なら隠しています。
これで点滅させます。

134行目、マウスの左ボタンが押されたら変数 state = “title” にしています。
クリックすると 122行目の while state = “gameover" ループから抜けます。
143行目以降、表示していたメッセージを隠しています。

 

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

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

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