ゲームに深さ優先探索アルゴリズムを実装しようとしています。私はこの Web ページを研究してきました: http://www.mazeworks.com/mazegen/mazetut/index.htm、壁の代わりにブロックで使用できないことがわかりました。ブロックとは、エッジだけでなく、セル全体を覆う正方形のことです。この方法の方が簡単だと思っていましたが、今はよくわかりません。誰かがこれをしましたか?もしそうなら、どのように?(疑似コードは問題ありません)。または、簡単な場合は、壁の方法を使用する必要がありますか?
3096 次
1 に答える
4
あなたが実際に達成したいことに応じて、私はあなたのために2つの解決策を持っています. どちらも基本的に、参照した Web サイトで提示されているアルゴリズムです。
1.) 迷路内の事前定義された位置にブロックがあります
2*k+1
グリッド上でアルゴリズムを実行します- セルの番号付けが左上から (0,0) で始まるとします。2 つの奇数座標 (
(2*p+1, 2*q+1); p,q < k
) を持つすべてのセルをブロックとしてマークします。 - 残りのセル (「偶数セル」) で、ソースから変更されたアルゴリズムを実行します。変更は次のとおりです。
- ランダムに選択された偶数セルから開始
- 「隣接セル」は、任意のグリッド方向で 2 番目から 2 番目のセルです。つまり、レンガを「ジャンプ」します。
- セルの間の壁を倒す代わりに、ブロックをアクセス可能なセルに変えます。ただし、このセルは選択とバックトラックでは考慮されません
2.) セルを区切る壁の代わりに、ブロックが必要です。
アルゴリズムを開始する前に、任意の数のセルをブロックとしてマークします。ソースに概説されているとおりに進めますが、ブロックセルは考慮しないでください。迷路内での完全なアクセシビリティを保証したい場合は、特別な予防措置を講じる必要があります。簡単な方法は、隣接するブロックが 1 つを超えるブロックとしてセルをマークしないことです。
これらのアイデアがあなたのニーズに合っていることを願っています。
よろしく、カルテン
于 2011-05-26T08:46:38.057 に答える