これまで自分の戦車だけしか動かすことができませんでした。今回は敵の戦車を出現させます。

敵の戦車は左右上方の角に出現します。そして基本的にUターンはしません(袋小路に入った場合は例外とする)。ときどき砲弾も発射させます。

敵が出現するのはEの位置です。それから自分の戦車の最初の位置はMです。そこでCreateStage(int i)メソッドを以下のように書き直します。

Mの位置がわかればその位置に自分の戦車を表示させることができます。

敵の戦車をリストで管理します。最大で5両出現します。EnemyTanksプロパティを定義して、フィールド上に存在し、かつ生き残っているものを取得できるようにしておきます。

爆破の描画に必要なオブジェクトもプロパティで管理します。

敵の戦車 EnemyTankクラスを作成します。Randomオブジェクトは方向転換のときに必要です。

移動はタイマーイベント1回で0.1ずつ移動させます。2.0移動したら方向転換できる方向を取得して方向転換します。

Shot()メソッドは砲弾を発射するためのメソッドです。タイマーイベント60回に1回のペースで砲撃させます。

次にForm1クラスでの処理ですが、敵の新しい戦車は出現するのか? 敵戦車と敵の発射した砲弾を移動させ、命中したかどうかの判定と命中時の処理をおこないます。

Update()メソッドが長くなるので、自分が発射した砲弾の当たり判定、敵の新しい戦車は出現するかどうかの判定、敵戦車と敵の発射した砲弾の移動、命中したかどうかの判定と命中時の処理は別のメソッドにわけています。

敵にやられたときは敵は一旦クリア、3秒後に自分の戦車を最初の位置に戻して復帰します。

最後に敵と敵の砲弾をレーダーに表示させる処理をおこないます。