隨機Prim法建立隨機迷宮(C 實現)

2022-08-10 21:00:29 字數 621 閱讀 8261

因為這兩天想參加乙個比賽,所以就在上網找素材,剛好看到了迷宮生成,就決定拿這個開刀了。

源位址中是使用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中任意兩點可...

隨機生成迷宮

首先初始地圖所有位置均設為障礙牆,然後任意插入乙個牆體進牆佇列 再判斷此時牆體是否可以設定為路 判斷依據 上下左右四個位置是否只有乙個位置是路 若設定為路,則將該位置四周所有的牆插入佇列 若無法設定為路,直接從牆佇列中刪去當前結點所在的節點,若牆佇列不為空,則從佇列中隨機選取一處障礙重新執行,重複以...