月見大会はチームが3機でない場合があるので、開幕処理を通常の番号ロックで行うとこちらがアウェイの時に誤作動する可能性がある。 機体数が分からない時に敵機体が地雷を持っているか、また敵チームが全機体飛行型かどうかを判別したい。
どうすればいいんだとひとしきり頭を悩ませた後、全機体ロックすれば出来ることに気付いた。 まず自機Y座標を取っておき、ループで1番から順にロック。 カウンタAに1ずつ足し、カウンタAでロックしていく。 ターゲットY座標と自機Y座標の符号が同じならば味方と判断して次の番号へ。 符号が違うなら敵機体と判断、武装のチェックを行う。 また、ターゲットが敵飛行型ならカウンタCに1加算しておく。 ループを抜ける条件は、カウンタDにターゲット番号を入れ、そこからカウンタAから引いた値が-2だった時。 例えば全部で4機だった場合、カウンタAが5の時には5番機は存在しないためカウンタDが4となり、カウンタAを引くと-1。 ループ脱出条件が-1の時でないのは、自機をロック出来ないためだ。 自機が2番機ならばカウンタAが2の時にターゲット番号は1となり、結果は-1になる。 これを防ぐためにループをもう1周させ、結果が-2の時とした。 このため、敵飛行型がターゲットの時でもカウンタDが-1ならば数えないようにする必要がある。 ループ脱出後に敵機体数を取得してカウンタCと比べ、同じ値ならば全機飛行型のチームだ。
何かを数えない場合はカウンタAが7以上で抜けるようにすればよい。 カウンタDが-1なら、という条件もいらなくなる。 今回上記のような面倒くさい方法にしたのは数え間違いを防ぐためだ。 例えば全5機で5番機が敵飛行型だと、カウンタAが6の時6番機は存在しないので5番機がロックされたままになる。 そうすると6番機に飛行型がいると勘違いして飛行型の数を正しく数えられなくなってしまう。
最初はカウンタAが敵機体数+味方機体数+1以上ならループ終了としていたが、アウェイ時に味方1番機が正しく判別出来ないためこのようになった。
最高の8周ループを回すと行動するまで20フレーム近くかかる。 前列配置なので、開幕1フレームでカノン乱射をされると回避行動をとれない。 ビームは通常射撃で撃たれると1発回避不可能になる。 カノン乱射は何もしなければほとんど当たらないし、ビームも1発なら痛くないので気にしないことにする。 へたに回避行動を入れた方が当たってしまうし、敵機体にカノン乱射1発キャンセルでミサイルとされると開幕処理が中途半端なまま終わる。
今回の地雷チェック+飛行型カウントで25チップほど。 ミサイル判断や機体判断を増やすとサブをまるまる使いそうだ。
|