ゲーム・スクランブルでは地上にミサイルが設置されていて戦闘機にむけて発射されます。

Mと書かれている部分がミサイル設置地点です。

Missileクラスの作成

まずミサイルのクラスを作成します。

メソッド

void Fly()
上へむけて移動させる

void Draw(Graphics g)
パネル上に描画する

プロパティ

int initX, initY
最初に設置されている座標

int moveY
どれだけ上へ移動したか?

bool IsDead
破壊されているかどうか?
(破壊されていなくても、描画の必要がない場合はIsDead == true とする)

bool IsFlying
飛行中かどうか

画面がスクロールされたり上へ移動した結果、表示する必要がなくなったら、IsDead = trueにします。

以下はミサイルを描画するためのメソッドです。IsDead == trueなら表示の必要はありません。まだ発射されていないのであれば発射すべきかどうかも、ここで判定します。自機とミサイルの位置関係で判定していますが、すべてのミサイルが同じタイミングで発射されないように乱数を使っています。

Topographyクラスの変更

ミサイルの設置位置は地形クラスで管理します。Mがミサイルの設置場所です。

GetInitMissilePosition()メソッドは、ミサイルの設置座標を取得するためのメソッドです。

その他のメソッド、プロパティ、フィールド変数は前回と同じです。

Form1クラスの変更

ゲームが開始されたらミサイルの設置位置を調べてミサイルの初期化をします。

Tickイベントが発生したらすでに発射されているミサイルのY座標を上へ移動させます。panelEx1.Invalidate()が実行されたらイベントハンドラPanelEx1_Paintによって自機と地形、ミサイルが描画されます。