首页 > 代码库 > 走出迷宫小游戏
走出迷宫小游戏
#include <stdio.h>
/*
游戏说明:玩家通过键盘录入 w,s,a,d控制小人向不同方向移动,其中w代表向上移动,s代表向下移动,a代表向左移动,d 代表向右移动,当小人移动到出口位置,玩家胜利
地图如下:
######
#O#
# ## #
# # #
## #
######
说明: # 代表 墙 O代表小人 ‘ ’ 代表路
分析:
1、打印地图
1、保存地图
2、打印
2、让玩家移动小人
1、提示玩家如何移动小人
2、接收玩家的录入
3、根据玩家录入来移动小人
3、判断输赢
*/
int main(int argc, const char * argv[]) {
// 1、保存地图
char map[6][6] = {
{‘#‘,‘#‘,‘#‘,‘#‘,‘#‘,‘#‘},
{‘#‘,‘O‘,‘#‘,‘ ‘,‘ ‘,‘ ‘},
{‘#‘,‘ ‘,‘#‘,‘#‘,‘ ‘,‘#‘},
{‘#‘,‘ ‘,‘ ‘,‘#‘,‘ ‘,‘#‘},
{‘#‘,‘#‘,‘ ‘,‘ ‘,‘ ‘,‘#‘},
{‘#‘,‘#‘,‘#‘,‘#‘,‘#‘,‘#‘}
};
// 打印地图
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
// 为了计算小人下一个位置,我们必须首先直到小人当前位置
// 小人当前位置的X坐标
int currentX = 1;
// 小人当前位置的Y坐标
int currentY = 1;
// 3.1根据玩家的录入移动小人
// 为了判断小人的移动,我们需要定义变量来表示路
char street = ‘ ‘;
while (1) {
// 2.1 提示玩家移动小人
printf("请移动小人,w表示向上,s表示向下,a表示向左,d表示向右\n");
// 2.2接收用户的录入
char direction;
// %c 前面加一个空格,来吃掉后面的回车
scanf(" %c",&direction);
switch (direction) {
case ‘w‘:{
int nextX = currentX -1;
if (map[nextX][currentY] == street) {
// 交换位置
char temp = map[currentX][currentY];
map[currentX][currentY] = map[nextX][currentY];
map[nextX][currentY] = temp;
// 改变小人当前位置
currentX = nextX;
}
break;
}
case ‘s‘:{
// 如果小人下一个位置是路就移动小人
int nextX = currentX + 1;
if (map[nextX][currentY] == street) {
// 定义中间变量记录小人的当前位置
// 交换位置
char temp = map[currentX][currentY];
map[currentX][currentY] = map[nextX][currentY];
map[nextX][currentY] = temp;
// 改变小人当前位置
currentX = nextX;
}
break;
}
case ‘a‘:{
// 计算小人下一个位置
int nextY = currentY - 1;
if (map[currentX][nextY] == street) {
// 交换位置
char temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX][nextY];
map[currentX][nextY] = temp;
// 改变小人当前位置
currentY = nextY;
}
break;
}
case ‘d‘:{
// 计算小人下一个位置
int nextY = currentY + 1;
if (map[currentX][nextY] == street) {
// 交换位置
char temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX][nextY];
map[currentX][nextY] = temp;
// 改变小人当前位置
currentY = nextY;
}
break;
}
default:
break;
}
// 打印地图
for (int i = 0; i < 6; i++) {
for (int j = 0; j < 6; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
if(currentX == 1 && currentY == 5)
{
printf("你好牛X!\n");
break;
}
}
return 0;
}
走出迷宫小游戏