这是一个简单的C语言迷宫游戏,借这个迷宫游戏来增强我们对编程的兴趣。
直接看完整代码:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<Windows.h>
#define N 100
#define M 100
void Show(char str[][M], int n);
void UpdateWithInput(char str[][M], int n);
int main(void)
{
char str[N][M] =
{
"这是一个迷宫游戏(“*”代表墙壁,“0”代表人物,“G”代表怪物)。",
"游戏规则:通过用wsad键控制上下左右,在不被怪物吃掉的情况下走出迷宫\n",
"即为胜利。\n",
"游戏开始:\n",
"____________________________________________________________________________\n",
"*********************",
"*0 G *** *********",
"* *** G ******",
"* *** *** ***********",
"* * *** *********",
"*** ****G G *****",
"** **** ******",
"** ******** * ******",
"** * *G ****",
"** *** ******* ****",
"****** ******** G***",
"****** **************",
}; //保存迷宫
int n = 17;
Show(str, n); //显示迷宫
UpdateWithInput(str, n); //与用户输入有关的更新
return 0;
}
//函数功能:显示迷宫
void Show(char str[][M], int n)
{
int i;
for (i = 0; i < n; i++) //显示n行迷宫的数据
{
puts(str[i]);
}
}
//函数功能:完成与用户输入有关的迷宫更新
void UpdateWithInput(char str[][M], int n)
{
int flage = 0;
int x = 6, y = 1;
int exitX = 16, exitY = 6; //迷宫出口
char input;
while (x != exitX || y != exitY)
{
if (kbhit())
{
input = getch(); //从键盘获取输入
if ((input == 'a' || input == 'A') && str[x][y - 1] != '*')
{
if (str[x][y - 1] == 'G')
{
flage = 1;
goto e;
}
str[x][y] = ' ';
y--;
str[x][y] = '0';
}
if ((input == 'd' || input == 'D') && str[x][y + 1] != '*')
{
if (str[x][y + 1] == 'G')
{
flage = 1;
goto e;
}
str[x][y] = ' ';
y++;
str[x][y] = '0';
}
if ((input == 'w' || input == 'W') && str[x - 1][y] != '*')
{
if (str[x-1][y] == 'G')
{
flage = 1;
goto e;
}
str[x][y] = ' ';
x--;
str[x][y] = '0';
}
if ((input == 's' || input == 'S') && str[x + 1][y] != '*')
{
if (str[x+1][y] == 'G')
{
flage = 1;
goto e;
}
str[x][y] = ' ';
x++;
str[x][y] = '0';
}
}
system("cls"); //清屏
Show(str, n); //显示更新后的地图。
Sleep(100); //延时100ms
}
printf("YOU win! \n");
printf("恭喜你走出了迷宫!!");
system("PAUSE");
e:
if (flage == 1)
{
printf("Game Over!\n");
printf("你被怪物吃掉了。");
}
}
不多解释,看代码的注释应该就能懂了。大家可以运行一下,体验一下这个小游戏。