C语言编程小游戏-迷宫游戏(极难)
2016-12-26 本文已影响311人
我是果冻妹纸
以下是游戏截图:
迷宫示意图说明:0是玩家所在位置,#号是障碍物,玩家不可以穿越,玩家只可以移动到空白的地方,例如按s往下后出现这种情况
如图所示我们发现0即玩家已经往下走了一格
另外只能输入w、s、a、d这四个按键,输入其他无反应。
代码如下:
#include <stdio.h>
#define ROW 6
#define COL 6
int main(int
argc, const char * argv[]) {
char map[ROW][COL]={
{'#','#','#','#','#','#'},
{'#','0','#','#',' ',' '},
{'#','','#','#',' ','#'},
{'#','',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
};
char input;
//
表示人的位置
int x = 1;
int y = 1;
while (1) {
// 打印
for (int i = 0; i < ROW; i++) {
for (int j = 0; j< COL; j++) {
printf("%c", map[i][j]);
}
printf("\n");
}
// 胜利的代码
if (x == 0|| x == ROW - 1|| y == 0 || y == COL- 1) break;
// 提示用户的输入
printf("请输入 w(上) s(下) a(左) d(右)\n");
// 输入数据, 判断正确
while (1)
{
printf("> ");
input = getchar();
while (getchar() != '\n');
if (input =='w' || input == 's' || input == 'a' || input =='d') {
break;
}
}
// 更新地图
switch (input) {
case 'W':
case 'w':
// 判断下一个位置是否可以走, 如果可以走就交换地图中的数据
// 如果不能走就不变
// 即 判断 (x - 1, y) 是不是空格, 如果是空格就可以走
if (map[x- 1][y] == ' ')
{
// 交换
int temp = map[x - 1][y];
map[x -1][y] = map[x][y];
map[x][y] = temp;
// 交换后更新 x y
x--;
}
break;
case 's':
if (map[x+ 1][y] == ' ')
{
// 交换
int temp = map[x + 1][y];
map[x +1][y] = map[x][y];
map[x][y] = temp;
// 交换后更新 x y
x++;
}
break;
case 'a':
if (map[x][y - 1] == ' ') {
// 交换
int temp = map[x][y - 1];
map[x][y -1] = map[x][y];
map[x][y] = temp;
// 交换后更新 x y
y--;
}
break;
case 'd':
if (map[x][y + 1] == ' ') {
// 交换
int temp = map[x][y + 1];
map[x][y +1] = map[x][y];
map[x][y] = temp;
// 交换后更新 x y
y++;
}
break;
}
// 清屏
system("clear");
}
printf("恭喜你重获自由...\n");
return 0;
}