迷路作成アルゴリズム2

迷路作成アルゴリズム(2)穴掘り法

棒倒し法と比べると、ちょっと複雑だけど再帰さえ使えれば簡単。


1.奇数のマスを用意する(25*25等)
2.起点を決める(座標は奇数にする)
  (起点は道にする)
3.ルーチン(a)をコール
※ ってことで、マスはポインタで、座標は値で渡す。

a−1.座標から左右上下を調べ、全て道か座標空間外ならリターン
a−2.乱数で左右上下を決める。
a−3.2歩先を調べて道か座標空間外ならa−2に戻る
a−4.2歩先まで掘り進む
a−5.2歩先の座標を起点にして自身を再帰する
a−6.a−1に戻る


問題点としては、最初の起点を中心に放射状に迷路が出来る事。
ループの無い迷路になること。(左手法とかで、必ずゴール出来る迷路になってしまう・・・)
あと、まっすぐな道が作られにくく、くねくね道になる事。
乱数で左右上下を選択する際に、前回の方向をベースに確率を変動させることで、この辺は対応出来るでしょうけど・・・。
致命的なのは、必ず奇数の点で曲がり道になること。これは・・・ちょっとツマラナイです。

再帰を使わなくても、スタックを使えばそれなりに書けそう。座標だけスタックに積んでおけば良いから。(スタックすら使えない時は、スタックをシミュレートすれば良いか?)