通过网格图来形成迷宫
如下图
白色格子代表空地,蓝色格子代表墙
假如从1,1点出发,可以发现它有两个邻居,分别是3,1和1,3可以随机选择一个邻居并打通它们之间的墙,如果我们选择1,3,那么就会如下图所示
1,1和1,2以及1,3就会形成一条路。接下来寻找1,3的邻居,以此类推
依次随机选择3,3、3,1、5,1、7,1、7,3、7,5、5,5、5,3、3,5、1,5、1,7、3,7、5,7、7,7打通墙之后,就会生成上图所示的迷宫。
代码实现
首先我们要生成一个网格。代码如下(其中print()是定义的一个打印迷宫的函数)
void Init(int num)
{
int i, j;
for (i = 0;i < count;i++)
for (j = 0;j < count;j++)
map[i][j] = wall;
for (i = 1;i < count - 1;i++)
{
for (j = 1;j < cou