今回でギャラクシアンもどきを完成させます。完成品はこんな感じです。

当たり判定

当たり判定、Timer1_Tick メソッドの最後の部分です。

自機の弾丸と敵、敵と自機、敵弾丸と自機の当たり判定をおこないます。そのためのメソッドです。どちらかというとハズレ判定のような中身になってしまいました。

自機の弾丸と敵の当たり判定がtrueのときは敵を撃墜できたので点数を加算、敵と自機、敵弾丸の当たり判定がtrueのときはミスをしたことになります。それぞれ OnHitEnemy と OnMiss で処理をしています。もし敵がゼロになっていればステージクリアです。

命中した場合は弾丸と敵をDisposeしています。これだけでは面白くないのでいろいろ追加していきます。

敵を撃墜したとき

敵を撃墜したときは点数を加算します。敵のIDを調べて得点を変えます。最上段は30点、2段目は20点、それ以外は10点、ただし攻撃中の敵を撃墜した場合は得点を2倍にします。

音を鳴らして爆発イメージを0.5秒間表示させます。事前に画像をつくっておき、ゲーム開始時に非表示にして、タイマーをつかって一瞬だけ表示させています。また音はここから取得しました。

効果音ラボ 戦闘[2]

ミスとゲームオーバー

通常のゲームでは自機は3機で全滅したらゲームオーバーです。そこでフィールド変数に残機を格納してミスするたびに1つずつ減らしていきます。また敵弾に命中すると音をならして背景を赤くしています。

残機がゼロになったらゲームオーバーです。

そして IsGameOver がtrueになったら、Timer1_Tickメソッドが呼ばれても何もしません。タイマーも止めてしまいます。

再びゲームをしたい場合は「S」キーを押せばできるようになっていますが、そのためには

止まっているタイマーを動かす
IsGameOverフラグをクリアする
現在の敵を消去して作り直す
得点をゼロにする
残機の表示

などが必要です。

終わりに

以上で、とりあえず完成とすることにします。他にはステージが進むにつれて敵の移動速度を速くする、編隊攻撃と単体攻撃では得点を変えるなど改良の余地がたくさんあります。各自で工夫してオリジナリティあふれるゲームをつくってください。