例によって毎日プログラムは入力しています。ただ歳を食ったせいか動作確認と感想を書くのがめんどうになってるだけ(号泣)
というわけで本日はポプコム85年3月号より「ディフェンスバリア」のご紹介です。本作も同号掲載のショートプログラム特集収録の小品です。
自機を動かし、敵のバリアに捕まらないよう逃げまわりましょう。敵は一定時間ごとに、円形のバリアを展開します。これに触れたり、中に捉えられてしまうとアウトです。
バリアを張るごとに、次の展開までの時間は短く、フィールドは狭くと、より難しくなります。どれだけ逃げ延びたかが得点です。
作者はなんと高原保法さん。ゲーム自体は、至ってシンプルな固定画面アクションゲームです。しかしさすが高原作品、簡素ながら、効果的な工夫がプログラムに見られます。
追い詰めるようで単純には追いかけてこない絶妙な敵移動アルゴリズムは、複数の配列変数を用意して、順繰りに座標を入れ替えていくという手法で実現しています。また、バリアの当たり判定にはSQR関数(平方根を求める関数)を使い、自機と敵の距離を求めることで、座標比較を簡便化しています。
なお、掲載されたリストには不具合があって、そのまま遊ぶと途中でフリーズします。バリア展開処理をインターバル割り込みルーチンとして実行しているのですが、割り込みルーチン中に割り込みオフ処理が抜けているため、割り込み間隔が一定の数値になると、そこから抜け出せなくなるのが原因です。ですので割り込みルーチンの最初と最後に割り込みオフ・オン処理を補う必要があります。リストを以下のように書き換えれば直せますのでどうぞご参考に。