追う2は、追う1を上下左右に移動するようにした物です。
 それ以外はほぼ同じです。
 追う1と同じ箇所は略します。

 追う1に無い数値変数 [乱]
 追う1と扱いが少し違う数値変数 [X][Y]…プレイヤーと敵との距離、移動先のマス目、マス目から換算した座標

スタートページ」「XY」「」「」「」「」「」「」「終了」 +調整方法


「スタートページ」

 追う1とほぼ同じです。
 サンプルでは初期位置をプレイヤー(1,1)、敵(10,8)にしています。
「XY」

 追う1とほぼ同じです。
 サンプルでは[X]←[X]×508、[Y]←[Y]×503にしています。
「プ」



 サブルーチンコール「上」
 IF[Y]≠ 0
  サブルーチンコール「XY」
  ダイナミックレイヤーの作成
 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png
  サブルーチンコール「上」 選択時に〜≠ノチェックする
 ENDIF
 サブルーチンコール「左」
 IF[X]≠0
  サブルーチンコール「XY」
  ダイナミックレイヤーの作成
 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png
  サブルーチンコール「左」 選択時に〜≠ノチェックする
 ENDIF
 サブルーチンコール「右」
 IF[X]≠12
  サブルーチンコール「XY」
  ダイナミックレイヤーの作成
  (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png
  サブルーチンコール「右」 選択時に〜≠ノチェックする
 ENDIF
 サブルーチンコール「下」
 IF[Y]≠9
  サブルーチンコール「XY」
  ダイナミックレイヤーの作成
 (イメージを表示=@X座標:%X%、Y座標:%Y% 画像:選択.png
  サブルーチンコール「下」 選択時に〜≠ノチェックする
 ENDIF
 マウスの入力を待つ(クリッカブル領域のみ)
 [プX]←[X]
 [プY]←[Y]
 サブルーチンコール「XY」
 レイヤー制御 対象レイヤー〈プ〉
 (レイヤーの表示状態<`ェック無し、レイヤー位置々座標:%X%、Y座標:%Y%)
 移動「敵」

 プレイヤーの番です。
 プレイヤーが移動場所を選択するダイナミックレイヤーを作成します。

 サンプルでは、(0,〜)(〜,0)(12,〜)(〜,9)は進めません。
 上は(〜,0)でない時、左は(0,〜)でない時、右は(12,〜)でない時、下は(〜,9)でない時にダイナミックレイヤーを作成します。
 その他は追う1とほぼ同じです。
「上」「左」「右」「下」



 [X]←[プX]
 [Y]←[プY]−1
 サブルーチンから復帰


 [X]←[プX]−1
 [Y]←[プY]
 サブルーチンから復帰


 [X]←[プX]+1
 [Y]←[プY]
 サブルーチンから復帰


 [X]←[プX]
 [Y]←[プY]+1
 サブルーチンから復帰

 追う1と違い、上下左右に移動します。
「敵」

 [X]←[プX]−[敵X] …X方向の距離を算出
 IF[X]<0
  [X]←0−[X]
 ENDIF
 [Y]←[プY]−[敵Y] …Y方向の距離を算出
 IF[Y]<0
  [Y]←0−[Y]
 ENDIF
 IF[X]=[Y] …等距離にいる時は乱数でどちらを優先するか決定
  [乱]←[@乱数]mod2
  IF[乱]=0
   [Y]←0 …左右優先
  ELSE
   [X]←0 …上下優先
  ENDIF
 ENDIF
 IF[X]>[Y] …左右優先
  IF[プX]>[敵X]
   [敵X]←[敵X]+1 …右へ
  ELSE …上下優先
   [敵X]←[敵X]−1 …左へ
 ELSE
  IF[プY]>[敵Y]
   [敵Y]←[敵Y]+1 …下へ
  ELSE
   [敵Y]←[敵Y]−1 …上へ
  ENDIF
 ENDIF
 [X]←[敵X]
 [Y]←[敵Y]
 サブルーチンコール「XY]
 レイヤー制御 対象レイヤー〈敵〉
 (レイヤーの表示状態<`ェック無し、レイヤー位置々座標:%X%、Y座標:%Y%)
 IF[プX]=[敵X]
  IF[プY]=[敵Y]
   移動「終了」
  ENDIF
 ENDIF
 移動「プ」

 敵の番で、よりプレイヤーに近づく方向に進むことは追うと1同じです。
 追う1では斜めに移動することで、一度の移動でX方向に近づくこととY方向に近づくことを同時に出来ました。
 追う2では上下左右に移動します。
 つまり一度の移動では、X方向に近づいたらY方向に近づくことは出来ず、Y方向に近づいたらX方向に近づくことは出来ません。
 そこで、追う2ではプレイヤーと敵とのX方向、Y方向の距離を出し、距離がある方向を優先して移動するようにします。
  [X]←[プX]−[敵X]
 で[X]にプレイヤーと敵のX方向の距離を入れます。
  IF[X]<0
    [X]←0−[X]
  ENDIF
 は、プX<敵Xの時は[X]がマイナスになるので、Y方向の距離との比較をしやすくする為に、0−[X]でプラスにします。
 Y方向も同様に距離を出します。
 普通はこれで、距離を比べて、どちらの方向を優先するかを決めて、プレイヤーとの位置関係から移動先を決めます。
 しかし、例えばプレイヤーが(9,7)、敵が(5,3)にいる時、
  (プX−敵X)=(プY−敵Y)=4
 になり、両方向の距離は同じです。
 この時はランダムに2方向の内の片方を選ばせます。
 [@乱数]mod 2で0ならX優先、1ならY優先にします。
 前述の「普通」の場合で[X][Y]を比較するので、[Y]←0にすれば自動的に[X]>[Y]となって、X方向の左右を優先して移動します。
 Y方向の上下優先も同様です。
「終了」

 追う1と同じです。

調整方法

 調整のポイントは、
・マップのマス目の数
・キャラ画像の表示位置
・キャラの初期位置
 です。

・マップのマス目の数
・キャラ画像の表示位置
 については、追う1と同じです。

・キャラの初期位置
 大きさと形に関らず、
先手
(奇,奇)(偶,偶)(奇,奇)
(奇,偶)(奇,偶)(偶,奇)
(偶,奇)(偶,奇)(奇,偶)
(偶,偶)(奇,奇)(偶,偶)
(奇,奇)(奇,遇)(偶,奇)
(奇,偶)(奇,奇)(偶,偶)
(偶,奇)(奇,奇)(偶,偶)
(偶,偶)(偶,奇)(奇,偶)
 の16通りの内のどれかなら、敵はプレイヤーを捕まえることが出来ます。
 これら以外だと、プレイヤーの近くまで行っても捕まえられません。

・他
 敵に捕まるまで何回移動したか、を出したい時については、追う1と同じです。