📄 迷宫规模函数.c
字号:
//文件名:迷宫规模函数
//文件内容:迷宫坐标设定,迷宫大小设定,迷宫表示方法,迷宫的初始化,初始化后的输出,起点和终点的输入
//迷宫坐标定义
typedef struct
{
int x; // 行值
int y; // 列值
}PosType; // 迷宫坐标位置类型
//迷宫的规模
#define MAX_LENGTH 23 // 设迷宫的最大行列为23
//迷宫表示方法
typedef int MazeType[MAX_LENGTH+2][MAX_LENGTH+2]; // 迷宫数组类型[行][列],其中行和列都包含了围墙
// 全局变量
MazeType m; // 迷宫数组
int x,y; // 迷宫的行数,列数
PosType begin,end; // 迷宫的入口坐标,出口坐标
//输出迷宫
void Print()
{
int i,j;
printf("围墙用#表示,可通用*表示,求得的迷宫通路用$表示\n");
for(i=0; i<=x+1; i++)
{
for(j=0; j<=y+1; j++)
{
if(m[i][j]==0)
printf("%3c",'#'); //如果不通则输出#
else
{
if(m[i][j]>1)
printf("%3c",'$'); //如果是求得的迷宫解则输出$
else
printf("%3c",'*'); //如果可通则输出*
}
}
printf("\n");
}
}//print()
//输入迷宫的初试状态
void Init()
{
int i,j; //循环控制变量
int number; //接收用户输入的墙的总数
PosType value;//接收用户输入的墙的坐标点
do
{
printf("请输入迷宫的行数、列数,中间请用空格隔开:\n"); //提示用户输入信息
printf("***注意:行数和列数应控制在%d以内***\n",MAX_LENGTH);
scanf("%d %d", &x, &y);
}while(x<=0 || y<=0 || x>MAX_LENGTH || y>MAX_LENGTH);//却保输入值有效
for(i=0; i<=y+1; i++) // 定义周边值为0(外墙)
{
m[0][i]=0; // 行周边
m[x+1][i]=0;
}
for(i=1; i<=x; i++)
{
m[i][0]=0; // 列周边
m[i][y+1]=0;
}
for(i=1; i<=x; i++) // 定义除外墙,其余都是通道,初值为1
for(j=1; j<=y; j++)
m[i][j]=1;
printf("请输入迷宫内墙单元数:"); //由用户输入迷宫的初试状态
scanf("%d", &number);
if(number != 0)
printf("请依次输入迷宫内墙每个单元的行数,列数,中间请用空格间隔:\n");
for(i=1; i<=number; i++)
{
scanf("%d %d", &value.x, &value.y);
m[value.x][value.y]=0; // 修改墙的值为0
if(value.x<=0 || value.x>x || value.y<=0 || value.y>y) //处理输入值不合法的情况
{
printf("您刚才输入的坐标不合法,请重新输入该坐标\n");
i--;
}
}
//输出初始化后的迷宫
printf("迷宫结构如下:\n");
Print();
//提示用户输入迷宫起点和终点
printf("请输入入口的行数,列数,中间用空格隔开:\n");
scanf("%d %d",&begin.x,&begin.y);
printf("请输入出口的行数,列数,中间用空格隔开:\n");
scanf("%d %d",&end.x,&end.y);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -