隨機迷宮生成演算法

發表於2016-01-03

線上迷宮遊戲地址: lbmaze@sae
專案地址: lbmaze@github

最近研究了下迷宮的生成演算法,然後做了個簡單的線上迷宮遊戲。遊戲地址和對應的開源專案地址可以通過上面的連結找到。開源專案中沒有包含服務端的程式碼,因為服務端的程式碼實在太簡單了。下面將簡單的介紹下隨機迷宮的生成演算法。一旦理解後你會發現這個演算法到底有多簡單。

  • 將迷宮地圖分成多個房間,每個房間都有四面牆。
  • 讓“人”從地圖任意一點A出發,開始在迷宮裡遊蕩。從A房間的1/2/3/4個方向中的任選一個方向前進。在從A房間走到B房間的過程中,推倒A/B房間之間的牆。
  • 如果方向x對面的房間已經走過,則選擇其他方向。如果所有方向的房間都已經走過,則退回上一個房間看是否還有可選道路。
  • 走到真正無路可走時,說明已經走過了所有房間,迷宮也生成好了。

下面是該演算法的python實現(核心部分)

注: 由於採用該方法生成的迷宮道路的分支數量並不是太多,coffeescript版在生成迷宮的過程中增加了隨機處理,對應演算法也稍微複雜一點點。

相關文章