生成迷宫算法

版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}

猜你喜欢

转载自blog.csdn.net/qq_36278071/article/details/71786015
今日推荐