演算法 隨機生成迷宮

2021-05-26 10:22:08 字數 1662 閱讀 7681

演算法原理:從起點開始,隨機選擇乙個方向移動,一直移動到終點,則移動的路徑便是迷宮的路徑。移動過程中要保證路徑不要相交,不要超出邊界,生成效果

public

partial

class mainform : form

void

btncreateclick

(object sender, eventargs e)

void

maze_panelmousedown

(object sender, mouseeventargs e)

void

maze_panelpaint

(object sender, painteventargs e)

private

void

makemaze

(int size)

}for

(int z1=0

, z2=2

*size+

2; z1<=2

*size+2;

++z1)

for(

int z1=0

, z2=2

*size+

2; z1<=2

*size+2;

++z1)

//建立出口

maze_matrix[2,

1] = 0

;maze_matrix[

2*size,

2*size+

1] = 0

;random random=new

random

(getrandomseed

());

searchpath

(random.

next

(size)+

1,random.

next

(size)+1);

}public

intsearchpath

(int x,

int y ),,,

};int zx = x*2;

int zy = y*2;

int  turn;

maze_matrix[zx,zy] = 0

;random random=new

random

(getrandomseed

());

turn=random.

next(2

)==0

?1:3

;for

(int i = 0

,next=random.

next(4

); i <4;

++i,next=(next+turn)%4)

}return0;

}public

void

debugs

(int size)

textbox.text+="\r\n";}

}int

getrandomseed

()public

void

render

(int size)}}

graphics mazeg=this

.maze_panel.

creategraphics

();mazeg.

drawimage

(bitmap,0,

0);}}

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中任意兩點可...