版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36278071/article/details/71786015
这个算法还是从网上找的,本来想用excle表格导出一个由1和0组成的迷宫,但是我用记事本将换行符换掉以后,发现顺序就乱了,可能是因为excle导出的文本里面含有其他字符,这种方法目前我还没有解决。所以就用了网上的方法。我下面介绍的是最简单,并且粗浅的生成迷宫的方法。网上有很多特别好而且特别细致的算法:
这里是资源http://www.doc88.com/p-5187301484773.html 向作者致敬!
1.用二维数组中不同的值代表空和障碍;
2.首先修好一条路,再将其余的点全部设置成障碍物;
3.再用随机函数产生随机点,将产生的随机点设置为空位置;
下面附上代码:
#include
#include
#include
#define N 20
int a[N][N]={0};
int b=0;
int i,j;
void map()
{
a[1][1]=1;
for(i=1;i<18;i++)
{
a[i][1]=1;
}
for(j=2;j<15;j++)
{
a[17][j]=1;
}
for(i=16;i>7;i--)
{
a[i][14]=1;
}
for(j=15;j<19;j++)
{
a[8][j]=1;
}
for(i=9;i<19;i++)
{
a[i][18]=1;
}
}
void disturb()
{
srand(time(NULL));
while(b<175)
{
i=rand() ;
j=rand() ;
if(i>0 && i<19 && j>0 && j<19)
{
a[i][j]=1;
b++;
}
}
}
void display()
{
for(i=0;i
{
for(j=0;j
{
if(a[i][j]==1)
printf(" ");
else
printf("█");
}
printf("\n");
}
}
int main()
{
map();
disturb();
display();
return 0;
}