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