前回の続き。
迷路は解けなくなりましたがさほど複雑でない地形の場合はちゃんと目的地にたどり着けるようにしました。
ダウンロード
前回だと、ツリー上のルートなら問題ないのですがルートにサイクルが出てくるとそのままぐるぐるとまわるケースがあったのでサイクル状態を判定させるようにしました。
前回は壁が右手の位置にあるように歩くようにしていたのですが
左手の位置になるように歩く場合も作って切り替えられるようにしておきます。
はじめは目的地へ近づくように歩いていきますが歩けなくなった場合、
地形マップのチップ数と同じ長さの配列を作り各要素の初期値を0b0000にセットして
方向が2なら0b0001、4なら0b0010、6なら0b0100、8なら0b1000を加えるようにして
そのチップ上で過去に言った方向を記憶しながら、右手に壁があるように歩きます。
もし同じチップ上で同じ方向に進むのならばサイクルとなるのでそこで左手と右手の基準を切り替えるようにしました。
また最初に右手を基準に歩くように切り替わったところより目的地に近づくと
通常の目的地へ近づくように切り替わります。
この場合もしかすると重くなるのかもしれないのでそこのところをもう少し調べたいです。