note/てくね のバックアップ(No.1)
とりあえず残しておく
ユニットの移動ルーチン(目的地指令) 1 指定したユニットと目的地の座標を取得 2 目的地の座標からその座標へ、何HEX離れているかを表した距離MAPを作成
距離MAPの例
※目的地から目的地への距離は0HEX
3 ユニットの座標の距離を距離MAPから取得
ユニットから目的地への距離は2HEX
4 索敵順に周囲1HEXの距離を全て取得
右上:距離3 右 :距離3 右下:距離2 左下:距離1 左 :距離2 左上:距離3
5 移動可能かつ、距離が一番近い(複数ある場合は取得した順、つまり索敵順)座標に移動する
このとき、距離が今よりも遠くなる場合は移動しない(同じ距離の場合は移動する)
優先度一覧 左下:距離1 右下:距離2 左 :距離2 ―――移動しない――― 右上:距離3 右 :距離3 左上:距離3
左下が移動可能なら左下に 左下が移動不可なら右下に 右下が移動不可なら左に 左が移動不可なら移動しない
左下が移動可能なので左下に移動
6 目的地に到着するか、移動力分の移動をするまで4~5を繰り返す
おまけ 目的地が移動不可な場合
ユニットから目的地への距離1
右上:距離2 右 :距離2 右下:距離2 左下:距離1 左 :距離0 左上:距離1
優先度一覧 左 :距離0 左下:距離1 左上:距離1 ―――移動しない――― 右上:距離2 右 :距離2 右下:距離2
左が移動不可なので左下に移動
ユニットから目的地への距離1
右上:距離1 右 :距離2 右下:距離2 左下:距離2 左 :距離1 左上:距離0
優先度一覧 左上:距離0 右上:距離1 左 :距離1 ―――移動しない――― 右 :距離2 右下:距離2 左下:距離2
左上が移動不可なので右上に移動
以下ループ