我试图建立一个随机的迷宫在C++,但我不能开始,因为我不知道如何创建网或细胞。我怎么可能创造它?我也想创建使用ASCII characters.我怎么能存在阵?(可以在任何一个得到代码样本和一些解释这样我就可以更好地理解它)

另一个问题:什么是数据结构应当我需要了解和使用?我计划使用Eller的算法或验的算法。

谢谢你们对我的帮助!我是个初学者的程序员,并且我想要了解关于这一点,因为这是我的一部分项目,谢谢你改变了!

有帮助吗?

解决方案

您可能希望你的迷宫存储在2维字符数组。可以具有或不具有在C ++中对其进行初始化声明一个数组。

char a[30][10];  // declares a char array of 30 rows and 10 columns.

// declare an array with 3 rows and 3 columns, and provide initial values
char ticTacToeBoard[3][3] = {{'x', 'x', 'o'},
                             {'o', 'o', 'x'},
                             {'x', 'o', ' '}
                            };

您可以更改初始值'|''-'墙壁在你的迷宫,并用空格字符,' ',为通道。 无论是初始化方法的工作,但你总是用同样的方法的元素。下面是如何明确板上面的初始化数组英寸

// clear the board
for (int row=0; row<3; row++) {
    for (int col=0; col<3; col++) {
        ticTacToeBoard[row][col] = ' ';
    }
}

如果你想读一个元素的值(当你试图浏览一个迷宫有用),使用相同的下标符号,当你设置它的价值。

char y = a[2][2]; // reads the character in row 2, column 2

其他提示

你在寻找 迷宫代算法 (更多)?是你的问题的算法,或者图形?

典型算法的工作,通过考虑每个"单元"在迷宫作为一个顶点的曲线图,开始与所有的"墙",并删除置的墙壁,相当于一个生成树。(因此为了随机,他们中的许多人开始随机的重量和找到最低生成树。) 对于小的迷宫,至少,你不需要任何特别数据结构来表示的细胞;你可以只想到的每个单元作为一对 (x,y) (其coördinates).你不需要任何数据结构(相邻矩阵/相邻清单)储存图的边,因为邻居的 (x,y) 只是 (x,y±1)(x±1,y) (忽略那些属外部边界)。

在任何情况下,一旦你的生成树,你知道的墙壁"存在"和其不这样做,所以你有一个完整的描述的迷宫。如果你会画画迷宫,你知道哪些画。

绘制ASCII的人物,你只是通过每个行一个由一:绘制的"上方的墙"(把"--"如果隔离墙之间 (x,y)(x,y+1) 存在),然后绘制的实际排(把"|"如果隔离墙之间 (x,y)(x+1,y) 存在的话)。最后画的底部的边界。

垂直墙:| 卧式。壁:_

如果您使用的固定宽度的字体:

 _____
| |  _
|_  | |
 __ | |
|_____|

我不完全知道该怎么做,但在这里就是我会开始。

确定,其中在网格上的起点和终点会。然后,创建一个单一路径,与任何波浪线你想要的。基本上,它应该是随机的运动,每一个还有这条路径的方式到达终点的时间检查。然后,从这个路径中删除一定量的壁,并创建这些孔其它路径。直到你用完的空空间继续此。然后,也许,确保没有短路径已经建立。若有,方框那些起来。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top