如何在C++中为随机迷宫创建单元格或网格?

jes*_*iel 4 c++ algorithm maze data-structures

我正在尝试用C++创建一个随机迷宫,但我无法启动,因为我不知道如何创建网格或单元格.我怎么能创造它?我还想用ASCII字符创建它.我怎么能把它存放在数组中?(任何人都可以提供示例代码和一些解释,以便我能更好地理解它)

另一个问题:我需要学习和使用哪些数据结构?我打算使用Eller算法或Kruskal算法.

谢谢你们帮助我!我是一个begginer程序员,我想了解这一点,因为这是我的项目的一部分,谢谢你变化很大!

Shr*_*saR 7

你在寻找迷宫生成算法(更多)吗?你的算法或图形有问题吗?

典型的算法通过将迷宫中的每个"单元"视为图形的顶点来工作,从所有"墙"开始,并移除与生成树对应的一组墙.(因此,为了使其随机化,其中许多以随机权重开始并找到最小生成树.)对于小型迷宫,至少,您不需要任何特殊的数据结构来表示单元格; 你可以把每个细胞都想象成一对(x,y)(它的合作).并且您不需要任何数据结构(邻接矩阵/邻接列表)来存储图的边缘,因为邻居(x,y)只是(x,y±1)(x±1,y)(忽略那些超出边界的那些).

在任何情况下,一旦你有了生成树,就会确切地知道哪些墙"存在"而哪些不存在,所以你有一个完整的迷宫描述.如果你要绘制迷宫,你知道要画哪些.

要使用ASCII字符画,你只是一个穿过每行一个:画"上墙"(把" --"如果之间的墙(x,y)(x,y+1)存在的话),然后绘制实际行(放" |"如果墙之间(x,y)(x+1,y)存在).最后绘制底部边界.