⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 migongchengxu.txt

📁 迷宫,你有感兴趣吗?用C语言编写的迷宫程序.简单易懂.
💻 TXT
字号:
#include "stdio.h"
#include"stdlib.h"
#include "time.h"
#define m 6
#define n 8
struct stype
{
int x,y,pre;
}sq[400];
int mg[m+1][n+1];
int zx[8],zy[8];
void printlujin(int rear)//输出迷宫路径
{
	   int i;
	   i=rear;
	   do
	    { printf("(%d,%d)←",sq[i].x,sq[i].y);
	      i=sq[i].pre;
	     }while (i!=0);
	     printf("\n");
}
void migonglujin()
{
int k;
A: 
printf("\n你想知道迷宫的出路吗?(1/0):");
scanf("%d",&k);
			 if(k==1)
				 goto B;
           else
				 if(k==0)
				 {printf("\n在等待当中……\n");
			      goto A;
				 }
				 else
				 { printf("你输入有误!");
				     printf("请重新输入:");
				    goto A;
				 }
B:
{
int i,j,x,y,v,front,rear,find;
zx[1]=-1;zx[2]=-1;zx[3]=0;zx[4]=1;
zx[5]=1;zx[6]=1;zx[7]=0;zx[8]=-1;
zy[1]=0;zy[2]=1;zy[3]=1;zy[4]=1;
zy[5]=0;zy[6]=-1;zy[7]=-1;zy[8]=-1;
sq[1].x=1;sq[1].y=1;sq[1].pre=0;find=0; //从(1,1)开始搜索
front=1;rear=1;mg[1][1]=-1;
while(front<=rear&&!find)
{x=sq[front].x;y=sq[front].y;
for (v=1;v<=8;v++)//循环扫描8个方向
{
	        i=x+zx[v];j=y+zy[v]; // 选择一个前进的方向
	        if (mg[i][j]==0) //如果方向可走
	          {rear++;// 进入队列
               sq[rear].x=i;
	           sq[rear].y=j;
	           sq[rear].pre=front;
	           mg[i][j]=-1;
            if (i==m&&j==n)
		      {
			    printlujin(rear);
	           find=1;
				 
		       }
			}
}
front++;//取下一个搜索点
}
if (!find)
printf("\n这个迷宫没有出路(完蛋了)!\n");
}
}
void main()
{   
     printf("\n\t\t**************欢迎使用迷宫求解系统**************\n");
     printf("\n\t游戏说明:\n");     
     printf("\n\t       系统将随机产生一个6行8列的<0、1矩阵迷宫图>\n");
     printf("\n\t       注:0表示通路,1表示不通:\n");
	 printf("\n\t系统产生迷宫图数据如下:\n");
	 int i,j;     
srand((unsigned)time(NULL));
for (i=1;i<=m;i++)//获取迷宫数据,输入0或1
        for (j=1;j<=n;j++)
           { 
               mg[i][j]= rand() % 2; 
               printf("%2d",mg[i][j]);
            }
     for(i=0;i<=m+1;i++) //添加外围
        {
mg[i][0]=1;mg[i][n+1]=1; 
        } 
          for (j=0;j<=n+1;j++)
            {
mg[0][j]=1;mg[m+1][j]=1;
            }
          printf("\n\n\t迷宫图:\n");
           
		  for (i=1;i<=m;i++)
		    {   printf("\n\t");
			    for (j=1;j<=n;j++) 
		        printf("%4d",mg[i][j]);
	            printf("\n");
            }
migonglujin();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -