C语言实现迷宫程序
前言
大家小时候一定都玩过迷宫这个游戏,很吸引人吧,有那种走不出来就不罢休的执着,然后走出来了觉得自己很强,自己可以了,接着激动的开始下一个关卡,慢慢的沉溺在迷宫的世界里了。
然后我就有了这么个想法,自己做一个迷宫,直到今天,终于有了初步结果
提示:以下是本篇文章正文内容
一、程序代码
1.读入数据
输入的数据即为迷宫的地图(这么叫吧)
代码如下:
char a[21][22]={ //21个0.但有一个'\0'所以申请22个空间
"000000000000000000000",
"0 0 0 0 0 0 0",
"0 0 0 00000 00000 0 0",
"0 0 0 0",
"0 000 000 0 000 0 0 0",
"0 0 0 0 0 0 0 0",
"0 0 0 00000 000 000 0",
"0 0 0 0 0 0 ",
"0 000 0 0 000 0 0 0 0",
"0 0 0 0 0 0 0 0 0",
"0 00000 000 000 0 0 0",
"0 0 0 0 0",
"000 0 0 0 000 0 0 0 0",
"0 0 0 0 0 0 0 0 0 0",
"0 0000000 0 000 00000",
"* 0 0 0 0",
"0 0 0 0 0 00000000000",
"0 0 0 0 0",
"000 0 00000 0 000 000",
"0 0 0 0 0",
"000000000000000000000"};
2.控制@的移动
用户通过按“w,a,s,d”来控制@的移动,需要注意的是当@碰到墙壁(即0)时,不能再移动
代码如下:
if (ch=='s')
{
if (a[x+1][y]!='0') //判断是否可移
{
a[x][y]=' ';
x++;
a[x][y]='@';
}
} //用户按下's'时,'@'往下移一位
else if (ch=='w')
{
if (a[x-1][y]!='0') //判断是否可移
{
a[x][y]=' ';
x--;
a[x][y]='@';
}
} //用户按下'w'时,'@'往上移一位
else if (ch=='a')
{
if (a[x][y-1]!='0') //判断是否可移
{
a[x][y]=' ';
y--;
a[x][y]='@';
}
} //用户按下'a'时,'@'往左移一位
else if (ch=='d')
{
if (a[x][y+1]!='0') //判断是否可移
{
a[x][y]=' ';
y++;
a[x][y]='@';
}
} //用户按下'd'时,'@'往右移一位
3.清屏再打印
在每次移动之后,需要清除移动前的地图,再打印新的地图
代码如下:
system("cls"); //清屏操作
for (i=0;i<=20;i++)
{
puts(a[i]);
} //打印'@'移动后的迷宫
4.循环控制@的移动
这里有一个很重要的事情需要强调一下:在每次移动后肯定要继续移动直到走出迷宫,不能移动一次就程序结束了,因此循环就显得很重要了
代码如下:
while (x!=p || y!=q) //p,q为迷宫出口的横纵坐标
{
}
5.宣布结果
当你走出迷宫的时候是不是应该庆祝一下呢
因此这里有一句"You win."庆祝你的成功
庆祝之前记得清屏哦
代码如下:
system("cls");
printf ("You win.");
二、完整程序
接下来便是将各组代码组合在一起,形成一个完整的程序
完整代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
int main ()
{
char a[21][22]={ //21个0.但有一个'\0'所以申请22个空间
"000000000000000000000",
"0 0 0 0 0 0 0",
"0 0 0 00000 00000 0 0",
"0 0 0 0",
"0 000 000 0 000 0 0 0",
"0 0 0 0 0 0 0 0",
"0 0 0 00000 000 000 0",
"0 0 0 0 0 0 ",
"0 000 0 0 000 0 0 0 0",
"0 0 0 0 0 0 0 0 0",
"0 00000 000 000 0 0 0",
"0 0 0 0 0",
"000 0 0 0 000 0 0 0 0",
"0 0 0 0 0 0 0 0 0 0",
"0 0000000 0 000 00000",
"@ 0 0 0 0",
"0 0 0 0 0 00000000000",
"0 0 0 0 0",
"000 0 00000 0 000 000",
"0 0 0 0 0",
"000000000000000000000"}; //至此迷宫打印完毕
int i,x,y,p,q;
char ch;
x=15; y=0; p=7; q=20;
for (i=0;i<=20;i++)
{
puts(a[i]);
} //输出初始迷宫地图
while (x!=p || y!=q) //没有完成迷宫之前一直循环
{
ch=getch(); //获取指示操作
if (ch=='s')
{
if (a[x+1][y]!='0') //判断是否可移
{
a[x][y]=' ';
x++;
a[x][y]='@';
}
} //用户按下's'时,'@'往下移一位
else if (ch=='w')
{
if (a[x-1][y]!='0') //判断是否可移
{
a[x][y]=' ';
x--;
a[x][y]='@';
}
} //用户按下'w'时,'@'往上移一位
else if (ch=='a')
{
if (a[x][y-1]!='0') //判断是否可移
{
a[x][y]=' ';
y--;
a[x][y]='@';
}
} //用户按下'a'时,'@'往左移一位
else if (ch=='d')
{
if (a[x][y+1]!='0') //判断是否可移
{
a[x][y]=' ';
y++;
a[x][y]='@';
}
} //用户按下'd'时,'@'往右移一位
system("cls"); //清屏操作
for (i=0;i<=20;i++)
{
puts(a[i]);
} //打印'@'移动后的迷宫
}
system("cls"); //清屏操作
Sleep(500);
printf ("You win."); //恭喜你,你赢了
Sleep(3*1000);
exit(0);
system("pause");
return 0;
}
三、疑惑
1.迷宫地图怎样用横竖代替(用0多少有些麻烦)
2.如何使最后打印的"You win."字体变大
四、总结
本文简单介绍了用C语言做迷宫并执行的程序,过程还是很开心的,终于有了自己的迷宫,各位大佬如果有其他的建议记得下方评论区告诉我哦,万分感谢
原迷宫地图: