回答
的source code is available在谷歌代碼,這樣你就可以自己讀,找到了!迷宮由函數generate_maze
在game.c
行78ff中生成。
Netwalk運行的Prim's algorithm隨機版本找到一個minimum spanning tree產生一個迷宮。 Prim的算法一次從一個源節點(或多個節點:在這種情況下,「服務器」,深藍色的雙高度框)開始一次一個分支地迭代地生長一棵樹。在算法的運行任何給定的時刻,數據結構看起來是這樣的:
在綠色的細胞在生長枝的頂端細胞:他們仍然有至少一個空他們可能成長的鄰居。在每一步中,算法選取其中一個綠色單元,然後選取其中一個空的鄰居(1),並向該鄰居添加一個分支。這個新的分支阻止鄰近的分支向其方向發展。當一個分支不再有空的鄰居(2),那麼它將從綠色單元格列表中移除。
最終綠色列表爲空:網絡的分支都沒有任何空的鄰居。這意味着電路板已滿,並且每個單元都通過單個路徑連接到服務器。
[我理想化了幾個位置的詳細信息:(1)實際上Netwalk算法是有點幼稚,只是挑選一個隨機的方向,而如果在該方向上的鄰居非空,它什麼都不做,繼續下一次迭代。 (2)沒有空的鄰居的分支沒有及時檢測到:如果他們恰好被選中,他們只能從綠色列表中刪除。該演示修復了這些小缺陷。]
非常感謝您指出遊戲和演示背後的想法。這很酷。 – boring
這是一個非常廣泛的客觀答案。感謝您的貢獻。 –
- 1. 迷宮/迷宮遊戲
- 2. DFS算法迷宮生成
- 3. 迷宮算法生成最困難的迷宮?
- 4. C#迷宮遊戲查詢
- 5. 迷宮遊戲編程
- 6. Python迷宮遊戲故障
- 7. 生成迷宮使用DFS算法
- 8. 在android中用於迷宮生成的遞歸除法算法
- 9. Haskell的終端迷宮遊戲
- 10. 迷宮遊戲的Javascript定時器
- 11. 像迷宮般的牆壁遊戲
- 12. C++ /快板5迷宮類遊戲
- 13. 迷宮遊戲幾個小問題
- 14. 輸入隱形C++迷宮遊戲
- 15. Flash AS3迷宮類型遊戲問題
- 16. 在Javascript中實現迷宮生成算法
- 17. 遞歸迷宮算法(在迷宮中旋轉件)
- 18. 什麼樣的迷宮解決算法是這樣的?
- 19. 穿越迷宮的算法
- 20. 什麼是在Letterpress iOS遊戲中生成字母的合理算法?
- 21. C:生成隨機迷宮
- 22. 在C++中的迷宮求解算法
- 23. 三維迷宮算法
- 24. 在用java編寫的迷宮遊戲中添加得分
- 25. 沒有死角的迷宮生成算法?
- 26. 使用非遞歸回溯算法生成迷宮的問題
- 27. 在迷宮遊戲中添加時間限制
- 28. 順利建立4D迷宮生成算法
- 29. Java深度優先搜索迷宮生成算法卡住
- 30. 遞歸回溯迷宮生成算法堆棧循環
我已經根據已發佈的答案的質量重新打開了此文件。然而,社區可以自由地不同意我的決定。我的推理是,答案證明這個問題確實是以客觀的方式以建設性的方式回答 - 雖然我同意這個措詞是相當廣泛的。 –
@Tim:謝謝。 –
@Gareth Rees :) –