Prim のアルゴリズムに基づいて迷路ジェネレーター プログラムを作成しています。
このアルゴリズムは、Prim のアルゴリズムのランダム化されたバージョンです。
- 壁でいっぱいのグリッドから始めます。
- セルを選択し、迷路の一部としてマークします。セルの壁を壁リストに追加します。
- リストに壁がある場合:
- リストからランダムな壁を選択します。反対側のセルがまだ迷路に入っていない場合:
- 壁を通路にして、反対側のセルを迷路の一部としてマークします。
- セルの隣接する壁を壁リストに追加します。
- 反対側のセルが既に迷路内にある場合は、リストから壁を削除します。
(ウィキペディアより)
私はすでにアルゴリズムを理解していますが、この部分に固執しています:「隣接セルが迷路の一部を形成しているかどうかを知る」(これは、隣接セルを最初に取得することを意味します)セルは実際にはツリーのノードであるため(迷路、セルの二次元配列) であり、壁はこれらのノード間のエッジであるため、各壁を点のペア (x、y) で識別する必要があると考えました。2 つのセルが壁で接続されているかどうかを確認するにはどうすればよいですか? (各セルには 4 つの壁があることに注意してください)
equals() 関数を使用することを考えました。物事を簡単にする疑似コードまたは最良の説明を求めているだけです。
私の Wall クラスには 3 つの属性があります。int x; int y (識別子)。
より多くの属性が必要だと思われる場合は、喜んでお知らせします。簡単な方法があることは知っていますが、行き詰っています ;) お時間をいただきありがとうございます。