1. 程式人生 > >迷宮生成

迷宮生成

兩個 pan 出棧 列表 起點 class 並且 標記 pre

回溯生成迷宮方法

    1.將起點作為當前迷宮單元並標記為已訪問  
    2.當還存在未標記的迷宮單元,進行循環  
        1.如果當前迷宮單元有未被訪問過的的相鄰的迷宮單元  
            1.隨機選擇一個未訪問的相鄰迷宮單元  
            2.將當前迷宮單元入棧  
            3.移除當前迷宮單元與相鄰迷宮單元的墻  
            4.標記相鄰迷宮單元並用它作為當前迷宮單元  
        2.如果當前迷宮單元不存在未訪問的相鄰迷宮單元,並且棧不空  
            1.棧頂的迷宮單元出棧  
            
2.令其成為當前迷宮單元

隨機普利姆生成迷宮

1.讓迷宮全是墻.  
2.選一個單元格作為迷宮的通路,然後把它的鄰墻放入列表  
3.當列表裏還有墻時  
    1.從列表裏隨機選一個墻,如果這面墻分隔的兩個單元格只有一個單元格被訪問過  
        1.那就從列表裏移除這面墻,即把墻打通,讓未訪問的單元格成為迷宮的通路  
        2.把這個格子的墻加入列表  
    2.如果墻兩面的單元格都已經被訪問過,那就從列表裏移除這面墻  

迷宮生成