因為這兩天想參加乙個比賽,所以就在上網找素材,剛好看到了迷宮生成,就決定拿這個開刀了。
源位址中是使用as實現的,沒學過as,所以直接不會執行,於是就自己根據原文的概念進行了模(chao)仿(xi)。
廢話說完了,現在來說一下隨機prim法的原理:
1.建立兩個陣列,乙個是用於儲存地圖的二維陣列α,另乙個是用於儲存待處理的牆的陣列β。
2.將α的所有方格全部初始化為牆。
3.選定起點,並將該位置的牆變為路,將其四周的四塊置入β陣列中(出界的直接篩掉,就不說了)。
4.當β陣列不為空時,迴圈以下步驟
1)從β陣列中隨機選擇一塊,暫且叫他a。
2)遍歷該方塊四周,並選定其中的某一塊為路的方塊,暫且叫他b。
3)判斷相對於a,在b的對側的方塊c是否為牆(假如b在a左側,就判定a右邊的方塊;b在a上方,就判定a下方的方塊;以此類推……),若為牆,則:
①將a、c均置為路。
②將c周圍是牆的所有方塊,均置入待β陣列中。
4)將a從β陣列中去掉。
執行完之後迷宮就生成好啦~
目前我還是只完成了任務目標的10%不到,現在這個版本還是只能生成迷宮而已,而且**也沒有足夠的優化。後續慢慢更新(在不影響比賽的前提下),直到整個工程結束。
Prim迷宮演算法 隨機迷宮生成
最近在學android開發,老師讓我們自己做個應用,我就想做個簡單的roguelike rpg小遊戲。由於要用到迷宮,所以在網上學習了一下prim迷宮演算法,先用c 手擼了乙個簡單的模板。隨機選擇乙個白色格仔 i,j 實際位置為i 2 1,j 2 1 作為當前正在訪問的格仔,同時把該格仔放入乙個已經...
使用prim演算法生成隨機迷宮
三 prim演算法和迷宮生成 1.我們將迷宮定義如下 迷宮由道路和牆組成,且迷宮中道路上的任意兩點應互相可達 2.隨機迷宮生成演算法一般有以下三種,這裡只介紹隨機prim演算法 最小生成樹 在帶權圖g v,e 中 v為點集,e為邊集且每條邊帶有權值 我們希望找到e的乙個無環子集t,使得v中任意兩點可...
隨機生成迷宮
首先初始地圖所有位置均設為障礙牆,然後任意插入乙個牆體進牆佇列 再判斷此時牆體是否可以設定為路 判斷依據 上下左右四個位置是否只有乙個位置是路 若設定為路,則將該位置四周所有的牆插入佇列 若無法設定為路,直接從牆佇列中刪去當前結點所在的節點,若牆佇列不為空,則從佇列中隨機選取一處障礙重新執行,重複以...