blog/7025
のつづき.
これをやっていくことにする.・作った迷路の正解経路を改変して難しくする
とかの方が考えるのが簡単かも.
今回作った迷路にはループが無いから,例えば,
「正解ルートのどこかを壁で塞いで代わりに他の箇所を開けて別ルートを開通させ,正解経路長が長くなったら採用」
みたいな処理を後段に加えればいいのかも.
---
(1)塞ぐ箇所はどこなのか
さて,↑の迷路の更新処理を行うには,
まず【迷路の正解ルート】を知ることができる必要がある.どうやるのか?
馬鹿正直にルート探索アルゴリズムを実装しはじめる前に少し落ち着いて考えれば,
今回作った迷路は【ループが無くて,迷路の壁は2つのグループに分かれている】のだから,
正解ルートは,2つのグループの間を通るはずだということがわかる.
見やすくするために,一方のグループの壁だけを赤に塗り替えてみれば,以下のようになる. 青点の箇所が正解ルートである.この青点群は,
「グリッド頂点群がどちらのグループに所属しているか?」に関するデータがあれば
隣接頂点間の所属先グループが異なる場所を列挙するだけで簡単に得られるわけだ.良かった.
「経路」にするためには点群の順序を並び替える必要があるが,今回は列挙だけできればよいので,その処理は不要.
この中のどれかをランダムに選んで塞ぎ,かわりに別のどこかを開通させればよいわけだ.ふむ.