元のプログラムを理解していないので`DEF`で機能追加してみました。
406が敵のスプライト番号なので`ENEMY_AI 406`と呼び出しています。
■ アルゴリズム
@ 現在のプレイヤー座標を目的地とする
A 3秒間は脇目も振らず目的地へ進む
B 時間になったので@に戻る
基本的にプレイヤーに近づくので何処かに行ってしまうことはない
目的地を決めたら一定時間行動を固定化するのでプルプル震えることはない
■ 簡単にプログラムの説明
スプライト用内部変数`7`にタイマーを保存
スプライト用内部変数`5``6`にX/Y方向の移動量を保存
初期値としてタイマーは3秒(ETIME:60*3 フレーム)にしている
※グローバル変数を極力使いたくないのでスプライトの内部変数を使っています
移動方向に障害物がある場合避けるようにしたけど少し複雑になったので割愛
(あまり難しいことはしていませんが…)
目的地を決定する場合プレイヤーの向いてる方向の50ドット前方にしたり後方にしたりしても面白いと思います。(三角関数を使えば求めることが出来ます)
簡単にするならプレイヤーの近くを乱数で目的地を決めるのも良いですね
ETIMEの初期値を乱数で変えると敵の癖みたいなものが生まれるので面白い
敵の攻撃はプレイヤーから一定の距離以内に入ると撃ってくるとか(三平方の定理で距離がわかる)
面白そうなシューティングだったのでついサンプルコードを書いてみました。(着弾音が特にお気に入り)
プログラムが長くなってくると頭がコンガラガッてくるので関数化(DEF)して機能毎にまとめてシンプルにしたほうが良いと思います。(少し考え方を変えないといけないけど)
関係ないけどフローチャートは説明する時に便利なので使っていますが、自分でプログラムを組む時に書く必要はありませんよ〜