敵の追跡アルゴリズムを改良します。

広いフィールドを敵(レッドカー)はランダムに動きます。これではなかなか捕まりません。かといって最適化された追跡アルゴリズムを実装してしまうと敵が複数台いてはすぐに挟み撃ちにあってしまうでしょう。敵の動きが見当外れなのでもう少し追跡アルゴリズムを改善します。

レッドカーはマイカーに可能であれば接近するような動き方をするように改良します。マイカーが自分よりも左下にいるのであれば左または下方向に動きます。その方向に移動できない場合はランダムに移動方向を決めます。

まずマイカーの位置はForm1クラス内で管理しているのですが、これにアクセスできるようにプロパティを作成します。

これでForm1.MyCarX、Form1.MyCarYとすればマイカーの位置を取得することができます。

既存のメソッド IfCanChengeDirect()を修正します。

GetCanChengeDirects()メソッドはレッドカーの移動可能な方向を返しますが、このなかにマイカーを効率よく追うことができる方向があるかどうか(マイカーが北東に見えるときにそのレッドカーは北か東に移動できるかどうか)を調べます。

もし効率よく追うことができる方向に移動可能であれば、それを優先的に選択します。複数ある場合(例えばマイカーの位置は北東でそのレッドカーは北へも東にも移動可能な場合など)は乱数で決めます。もし効率よく追うことができる方向に移動できないのであれば従来どおりの方法で取得します。

これだとレッドカーがマイカーがある位置に集まりやすくなり、ゲームの難度を上げることができます。