ゲームで迷路を生成するアルゴリズムは何ですかNetwalk? Google CodeのでゲームNetwalkで迷路を生成するアルゴリズムとは何ですか?
答えて
source code is available、あなた自身のためにそれを読んで見つけることができるように!迷路は、関数generate_maze
によってgame.c
、行78ffに生成されます。
Netwalkはminimum spanning treeを見つけるためにPrim's algorithmのランダム化されたバージョンを実行して、迷路を生成します。 Primのアルゴリズムは、ソースノード(またはノード:この場合は「サーバー」、ダークブルーの2倍の高さのボックス)から始めて、一度に1つずつ分岐するツリーを反復的に成長させます。アルゴリズムの実行中に任意の時点では、データ構造は、このようなものになります。
を緑に着色された細胞は、細胞が成長している枝の先端である:彼らはまだ、少なくとも1つの空の持っています彼らが成長するかもしれない隣人。各ステップで、アルゴリズムはこれらの緑色セルの1つを選択し、次に空の隣接セルの1つを選択して(1)とし、その隣接セルにブランチを追加します。この新しいブランチブロックは、隣接ブランチがその方向に成長することを阻止する。ブランチに空のネイバーがなくなった場合は、(2)、緑のセルのリストから削除されます。
最終的に緑色のリストは空です。ネットワークのブランチのどれもが空のネイバーを持っていません。これは、ボードがいっぱいであり、すべてのセルが単一パスでサーバーに接続されていることを意味します。
[私は場所のカップルで詳細を理想化しました:(1)実際にNetwalkアルゴリズムは少しナイーブで、ちょうどランダムな方向を選び、その方向での隣人がある場合空ではなく、何もせずに次の繰り返しに進みます。 (2)空のネイバーがないブランチは、適時に検出されません。選択された場合、緑のリストからのみ削除されます。デモでこれらの軽微な不具合が修正されました。]
ゲームとデモの背後にあるアイデアを指摘してくれてありがとう。カッコいい。 – boring
これは本当に幅広い質問に対する素晴らしい、客観的な答えです。貢献していただきありがとうございます。 –
- 1. DFSアルゴリズムの迷路生成器
- 2. 迷路解決アルゴリズム。複雑な迷路
- 3. 迷路ゲームのJavascriptタイマー
- 4. 番号迷路解決アルゴリズム
- 5. Cazeの迷路解決アルゴリズム
- 6. 私の迷路解決アルゴリズムには何が問題なのですか?
- 7. エリクシルのバイナリツリー迷路の生成
- 8. 再帰バックトラッカー迷路生成アルゴリズムスタックループ
- 9. Java:迷路のアイコン:何をする?
- 10. 固定エントリーポイントと退出ポイントで迷路を生成するにはどうすればいいですか?
- 11. j2me迷路ゲームに衝突検出を追加する
- 12. Java - ユニークなソリューションで迷路を作成
- 13. Letterpress iOSゲームで文字を生成するための賢明なアルゴリズムは何ですか?
- 14. Javaで迷路を作る?
- 15. n個のボールで迷路を解く一般的なアルゴリズム
- 16. なぜ迷路を生成するとき、グリッドは実際に10x10サイズではありませんか?
- 17. 迷路内で移動するエンティティを見つけるためのアルゴリズム
- 18. Pythonで迷路を解決する
- 19. 迷路を構築する
- 20. 迷路を表現する
- 21. テキストファイルを読み込んで迷路を作成する
- 22. ダイクストラのアルゴリズムは最短経路を生成しませんか?
- 23. Pythonで迷路のグラフを作成する
- 24. 最高の奥行きマップ生成アルゴリズムは何ですか?
- 25. C:ランダム迷路
- 26. "IBM 3624"と "VISA PVV"ピン検証と生成アルゴリズムの違いは何ですか?
- 27. ランダムなパックマンの迷路を作成するには
- 28. 迷惑メールとは何か:迷惑メールフィルタの作成のポイント
- 29. 迷路生成 - 再帰的分割(それはどのように動作するのですか)
- 30. 簡単なJava 2D配列の迷路ゲーム
投稿された回答の質に鑑みて、これを再開しました。しかし、コミュニティは私の決定に自由に同意することができます。私の推論は、答えはこの質問が確かに建設的な方法で客観的に答えることができることを証明しています。 –
@Tim:ありがとう。 –
@Gearth Rees :) –