1. 程式人生 > >迷宮算法

迷宮算法

dash 打通 深度 所有 開始 移除 隨機 nbsp tro

深度優先算法的核心是(翻譯的維基):
1、將起點作為當前格並標記
2、當還存在未標記的格時
——1、如果當前格有未標記的鄰格
————1、隨機選擇一個未標記的鄰格
————2、將當前格入棧
————3、移除當前格與鄰格的墻
————4、標記鄰格並用它作為當前格
——2、反之,如果棧不空
————1、棧頂的格子出棧

————2、令其成為當前格
——3、反之,隨機選擇一個格子為當前格並標記

通俗的說,就是從起點開始隨機走,走不通了就原路返回,從下一個能走的地方再開始隨機走。

隨機prim算法的核心是(翻譯的維基):
1、讓迷宮全是墻
2、選一個格作為迷宮的通路,然後把它的鄰墻放入列表
3、當列表裏還有墻時
——1、從列表裏隨機選一個墻,如果它對面的格子不是迷宮的通路
————1、把墻打通,讓對面的格子成為迷宮的通路
————2、把那個格子的鄰墻加入列表

——2、如果對面的格子已經是通路了,那就從列表裏移除這面墻

通俗的說,就是在所有可以走的地方上隨機挖洞,創造出新的可以走的地方。

參考鏈接:

https://en.wikipedia.org/wiki/Maze_generation_algorithm

https://en.wikipedia.org/wiki/Talk:Maze_generation_algorithm

迷宮算法