長いことスタックしてる時にどーやって抜け出すか考え中。
↓←←←←←←←←
↓↓←←←←←←↑
↓↓↓←←←←↑↑
↓↓↓↓←←↑↑↑
↓↓↓↓
→↑↑↑↑
↓↓↓→→→↑↑↑
↓↓→→→→→↑↑
↓→→→→→→→↑
→→→→→→→→→…
ENWSENWSENWSENWSE…
11223344556677889…
壁壁壁壁壁壁壁
↓┬┬
⇔←←←
↓↓↓××↑↑
↓↓→→→↑↑
↓↓××××↑
↓→→→→→↑
↓××××××
→→→→→→→…
やっぱりちょっと問題か…?
ENWSENWS
11112222
型にしてみるか?
壁壁壁壁壁
×
┌←←←
×├→↑↑
×├→→↑
×→→→→…
一見いいけど、北に壁があると西側には行けなくなる。
壁は必ずしも北にあるわけじゃないから、Wステップを1増やせばいいかというとそういうものでもない。東に壁があった時に困る。
しかしそもそもどこかで回転を逆にする必要があるはず。それを考えるとやはり11112222型が妥当か?
と、ここまで書いて気付いた。
ホムって1歩ずつ歩かないじゃん…移動先が進入不可セルだったらそもそも移動しないよね。
つまり北に壁があるとNステップが働かなくなる。
半径を拡大しながらぐるぐる回る方法で壁を回避するのは余り現実的な手法とは言い難いかも知れない。
動作チェックをしていたら、スタックした時に『明らかに0,0に向かおうとしている』動きをしていることが。どっかでなんか変なことをやらせてる気がしてならない。
思いつきを更に追加。
主人と自分とのX座標かY座標が合ってる時は、主人と自分の中間地点に向かって歩かせてみて、歩けなかったら更に一歩主人の方に歩かせてみる。それでもまだ歩けなかったらそこは壁。主人とは垂直な方向に移動して以下略。
とかやってみるか?
こういうメモって自分だけ分かればいいと思うんだ、うん。
++++++++++++++++++++
コメントレスは特になし。