スクランブルもどきにUFOを出現させます。

UFOの動きは三角関数を利用しています。Sin、Cosの引数はUFOオブジェクトが生成されてから呼び出されたMove()メソッドの回数を加工して使っています。またUFOのY座標の初期値が同じにならないように乱数をつかって分散させています(コンストラクタを参照)。

ゲームが始まったらミサイルの初期化と同時にUFOの初期化もおこないます。

UFOクラスのインスタンスの引数はX座標、Y座標の最大値と最小値でした。マップファイルを読み込んだら「U」がある位置を調べてUFOのX座標を求めます。そしてそこからUFOのY座標が取り得る最大値と最小値を求めます。下側にある地形の一番上よりも1.0大きい値が最小値となり、上側の地形の一番下よりも1.0小さい値が最大値となります。

効率よく求めるために文字列のリストを文字の二元配列に変換しています。

Update()メソッドが呼び出されたらUFOを動かします。また自機から発射された弾丸との当たり判定をおこないます。

UFOを動かす処理は自機がUFOを見ることができるエリアにいるときだけです。自機との当たり判定や弾丸、爆弾との当たり判定も同じです。

それからUFOとファイアボールが飛んでくるステージではミサイルは発射されません。

描画をするためのDraw()メソッドにUFOを描画するための処理を追加します。

スクランブルのステージ構成は、山岳地帯、UFOが出現する洞窟、火球、ビル、要塞、基地中枢の6つになっています。ミスをするとそのステージの最初からやり直しです。