几周不见,甚是想念
今天我们将学习一个小游戏-走迷宫,你可以通过键盘上的w s a d四个按键来控制小球上下左右移动,从而走出迷宫.
1.自定义迷宫
首先我们总得来自定义一个迷宫吧,先来搞个简单的迷宫
char a[50][50] = {
"######",
"#O # ",
"# ## #",
"# # #",
"## #",
"######" };
大写字母O表示小球,迷宫定义好后,我们就要想办法输出到屏幕上,那么是不是想到用printf呢?但是在这,我们用另一个函数puts,那么就是这样
for (i = 0; i <= 5; i++)
puts(a[i]);
puts(a[i])表示输出每一行的字符串。我们是不是得把小球的初始位置和出口的位置存下来啊,不妨就用x,y,p,q存下来
int x=1,y=1,p=1,q=5;
那现在我们是不是就要想办法来控制小球呢,我们来看下面
2.控制小球移动
那第一步是不是向下移动呢,我们要按s键,也就是我们输入了s这个字符,那么就要读取这个字符s,读取字符有四种方法:
scanf("%c",&ch);
ch=getchar();
ch=getche();
ch=getch();
scanf我们很熟悉,那么其他3个有什么区别呢,我们该使用哪一个呢,区别如下:
getchar()读取一个字符,输入后等待用户按回车键结束,显示输入的字符;
getche()读取一个字符,输入后立即获取字符,显示输入的字符;
getch()读取一个字符,输入后立即获取字符,不显示输入的字符。
这样说相信大家能懂,那么我们在这里是不是选择最后一个ch=getch()这个语句呢.
那怎么让小球向下移动一步呢,上代码
if (ch == 's')
{
if (a[x + 1][y] != '#')
{
a[x][y] = ' ';
x++;
a[x][y] = 'O';
}
}
仔细看看分析分析,你肯定看得懂,那么以此类推
if (ch == 'w')
{
if (a[x - 1][y] != '#')
{
a[x][y] = ' ';
x--;
a[x][y] = 'O';
}
}
if (ch == 'a')
{
if (a[x][y - 1] != '#')
{
a[x][y] = ' ';
y--;
a[x][y] = 'O';
}
}
if (ch == 'd')
{
if (a[x][y + 1] != '#')
{
a[x][y] = ' ';
y++;
a[x][y] = 'O';
}