これと同じようなものを作ります。

数字で表された敵インベーダー(数字インベーダー)にあわせてプレーヤーが移動ボタンで砲台の数値を増加させ、発射ボタンでその数値の数字インベーダーを撃破する。ゼロ以外の数字インベーダーを撃破した際に撃破した数字の合計が10の倍数になっていればПの形をしたUFOが出現した。これを撃破すると高い点が入るため、暗算力がものをいうゲームでもあった。数字インベーダーの桁が砲台のある左端に届いてしまうと攻撃されたことになり、砲台の表示が 三 → 二 → 一 と減っていく。1つの面内で、3つ全ての砲台が無くなるか、残弾(画面には表示されない)を使い切るとゲームオーバーになる。数字インベーダーを全滅させると砲台と弾数が回復し、次の面へ続く。

引用元 ゲーム電卓 – Wikipedia

そして完成したものがこちらになります。

ここでは

数字インベーダーを出現させる
数字インベーダーを撃破する
UFOを出現させる
ゲームクリアとゲームオーバー

これらが必要です。

まず数字インベーダーを出現させます。

フィールド変数は以下のとおり。

出現する数字インベーダーは乱数で決定します。また数字インベーダーの出現はタイマーイベントを捕捉しておこないます。コンストラクタ内でRandomオブジェクトを生成するとともに、タイマーの初期化を行ないます。

数字インベーダーの出現ですが、最初は2秒に1回です。ステージが進むにつれて速くしていきます。それから1ステージ当たりの数字インベーダーの数は16個です。残りの数字インベーダーの数はフィールド変数 EnemiesCount で管理します。

タイマーイベントが発生したら数字インベーダーをひとつずつ出現させます。6体まで表示されます。すでに撃墜されていない数字インベーダーが6体存在していて7体目が出現したらミスということになります。数字インベーダーが存在しない部分は「-」で埋めます。

数字インベーダーが左側に到達したらミスです。ミスをしたらタイマーを一旦止めます。そして3秒後に再スタートします。

次に数字インベーダーを撃破するコードを書きます。

Zキーを押すとターゲットが変更され、Xキーを押すと攻撃できます。Targetが10のときはUFOを攻撃します。

Shot() は、数字インベーダーを攻撃するメソッドです。Targetが10でないときはその数字を、10のときはUFOを攻撃します。ターゲットと同じ数字インベーダーが存在する場合は一番左のものをひとつだけ消します。そして数字インベーダーをひとつだけ後退させます。またEnemiesCountの値をひとつ下げます。

点数計算も行ないます。数字インベーダーは一番右で撃墜した場合が一番高得点(60点)で、左にいくほど点数が下がります。

EnemiesCountがゼロになったらステージクリアです。現在の得点を表示してStageをインクリメントします。またTimer.Intervalを小さな値にして数字インベーダーの出現速度を上げます。

それからTimer_Tick(object sender, EventArgs e)を修正します。1ステージあたりの数字インベーダーの数は16個です。すでに撃退されたものと現在表示されているものの合計が16になっている場合は、新しい数字インベーダーはつくらずに残されたものを左に移動させるだけにしなければなりません。