迷路ゲームデモ作成で使用したアルゴリズムの参考資料を一応メモとして残しておきます(自分のためにも ^^;)。
大きく分けて「迷路自動生成」と「経路探索」の2つあります。
| これが初期状態として、まずは準備として道の部分に番号を振ります。 番号の振り方の規則ですが、入り口から順番に「11221122・・・・」という風に、1と2を2個づつ交互に振っていきます。 (別に1と2じゃなく0と1とかAとBとか使ってもいいですが ^^;) |
| 迷路全体に振り終わるとこんな感じ。 経路を探索するには、今度は出口からスタートしてこの番号を「122112211・・・・」という具合に辿っていきます。 分岐点でどちらに進むかの判断は、単純に現地点の番号と違う番号になっている方向へ進めば良いという事で非常に明快です。 |
| できあがり。 |
と思っていたんだけど……
冒頭で挙げた「ポテンシャル法」てやつを知った後で、こういう壁も出口の場所も全部判明してる状況なら、もっと素直で分かりやすく簡単な方法があるな…と今さらのように気付いた。(^^;)
つまり、
| 最初に出口から歩数を数えマーキングしながら入口に向かって各道を辿って行って、 入口まで到達したら止める。 |
| 後は入口から逆にマーキングしておいた歩数が減るように道を辿れば良い。 うわ、簡単…(^^;) この方法だともしかしてループになった道があっても行けるかな? |