基于C语言实现的迷宫算法示例分享

—-想了解基于C语言实现的迷宫算法示例分享的全部内容且更多的C语言教程关注<计算机技术网(www.ctvol.com)!!>

基于C语言实现的迷宫算法示例分享实例讲述了基于C语言实现的迷宫算法。分享给大家供大家参考,具体如下:

利用c语言实现迷宫算法,环境是vc++6.0.

  #include<stdio.h>  #include<time.h>  #include<cstdlib>  int visit(int,int);  void setmaze();  int maze[11][11]=  {    {0,0,2,2,2,2,2,2,2,2},    {2,0,2,2,0,2,0,2,0,2},    {2,0,2,0,0,0,0,0,0,2},    {2,0,2,2,2,0,2,0,0,2},    {2,0,0,0,0,0,2,2,0,2},    {2,2,0,2,2,0,2,2,0,2},    {2,2,2,0,0,0,0,0,0,2},    {2,0,2,0,2,0,2,2,0,2},    {2,0,0,0,0,2,0,2,0,0},    {2,2,2,2,2,2,2,2,2,2}  };  int startI,startJ; //定义入口变量  int endI,endJ; //定义出口变量  int success=0; //定义返回变量  int p;  void setStart()    // 设置入口  {   printf("请设置迷宫入口(i,j):");   scanf("%d,%d",&startI,&startJ);  }  void setEnd()    // 设置出口  {    printf("请设置迷宫出口(i,j):");    scanf("%d,%d",&endI,&endJ);  }  void setmaze()   //设置迷宫图  {    int i,j,a,p;    for(i=0;i<10;i++)      for(j=0;j<10;j++)      {        p=rand()%2;        if(p==0) a=0;        else a=2;        maze[i][j]=a;      }  }  void DisplayMaze()    //打印迷宫  {    int i,j;    for(i=0;i<10;i++)    {    printf("  ");    for(j=0;j<10;j++)         if(maze[i][j]==2) printf("##");      //打印墙壁          else printf(" ");        //打印路径       printf("/n");     }  }  void Maze_PS()      //输出迷宫路径  {    int i,j;    if(visit(startI,startJ)==0) //寻找路径         printf("/n没有找到出口!/n");      else      {    maze[startI][startJ]=8;//设置入口标志        maze[endI][endJ]=9;//设置出口标志         printf("/n显示路径:/n");         for(i=0;i<10;i++)     {          for(j=0;j<10;j++)           {      if(maze[i][j]==8) printf("☆");//标志入口       else if(maze[i][j]==9) printf("○");//标志出口                else if(maze[i][j]==2)    printf("##"); //表示墙壁                 else if(maze[i][j]==1) printf(" >"); //表示路径                    else  printf(" "); //通路             }             printf("/n");         }      }  }  int visit(int i,int j)  //寻找迷宫路径函数,找到路径返回1,找不到路径返回0  {      maze[i][j]=1;      if((i==endI)&&(j==endJ)) success=1; //找到出口,返回值success为1      if((success!=1)&&(maze[i][j+1]==0)) visit(i,j+1); //检测右面通路,若通,向右移动      if((success!=1)&&(maze[i+1][j]==0)) visit(i+1,j); //检测下面通路,若通,向下移动      if((success!=1)&&(maze[i][j-1]==0)) visit(i,j-1); //检测左面通路,若通,向左移动      if((success!=1)&&(maze[i-1][j]==0)) visit(i-1,j); //检测上面通路,若通,向上移动      if(success!=1) maze[i][j]=0; //退回,自身标为0      return success;  }  main(void)    //主函数  {     int c1,c2;     for(c2=1;c2==1;)     {       srand(time(0));       printf("显示迷宫:/n");       for(c1=1;c1==1;)       {         DisplayMaze();         printf("按'1'输出新迷宫,'2'开始求解路径:/n");         scanf("%d",&c1);    rewind(stdin);//清除输入缓冲区         if(c1==1) setmaze() ;       }       if(c1!=1&&c1!=2) {printf("Error!!/n");break;}       setStart();       setEnd();       Maze_PS();       printf("Continue?(1 to continue,2 to exit.1)");       scanf("%d",&c2);       if(c2==1) setmaze();       else break;     }     system("pause");  }    

希望基于C语言实现的迷宫算法示例分享所述对大家C语言程序设计有所帮助。

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/488509.html

(0)
上一篇 2020年11月12日
下一篇 2020年11月12日

精彩推荐