#include <stdio.h>
#define ROW 6
#define COL 6
int main(int argc, const char * argv[]) {
//1、定义变量
char map[ROW][COL]={
{'#','#','#','#','#','#'},
{'#','O','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
};
//定义变量,保存用户输入的方向
char direction;
//定义路的字符
char street=' ';
//定义小人当前的位置
int currentX=1;
int currentY=1;
//2、初始化地图
for(int i=0;i<ROW;i++){
for (int j=0; j<COL; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
//3、提示游戏玩法
printf("请控制小人移动:w.上 s.下 a.左 d.右 q.退出\n");
//4、编写循环控制程序
char ch; //用于吸收字符
while (1) {
//5、获取用户输入的方向数据
scanf("%c",&direction);
scanf("%c",&ch);
//6、根据数据方向判断小人移动
switch (direction) {
case 'w':
case 'W':
// 1)判断小人将要移动的位置是否是路
if (map[currentX-1][currentY]==street) {
如果是路,则移动小人
char temp;
移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换
temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX-1][currentY]; map[currentX-1][currentY] = temp;
移动小人后,重新调整小人位置
currentX--;
}
break;
case 's':
case 'S':
// 1)判断小人将要移动的位置是否是路
if (map[currentX+1][currentY]==street) {
// 如果是路,则移动小人
char temp;
// 移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换
temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX+1][currentY]; map[currentX+1][currentY] = temp;
移动小人后,重新调整小人位置
currentX++;
}
break;
case 'a':
case 'A':
// 1)判断小人将要移动的位置是否是路
if (map[currentX][currentY-1]==street) {
// 如果是路,则移动小人
char temp;
// 移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换
temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX][currentY-1]; map[currentX][currentY-1] = temp;
移动小人后,重新调整小人位置
currentY--;
}
break;
case 'd':
case 'D':
// 1)判断小人将要移动的位置是否是路
if (map[currentX][currentY+1]==street) {
// 如果是路,则移动小人
char temp;
// 移动小人的方法:(1)让小人当前的位置和小人将要移动的位置交换
temp = map[currentX][currentY];
map[currentX][currentY] = map[currentX][currentY+1]; map[currentX][currentY+1] = temp;
移动小人后,重新调整小人位置
currentY++ ;
}
break;
//7、重绘地图
for(int i=0;i<ROW;i++){
for (int j=0; j<COL; j++) {
printf("%c",map[i][j]);
}
printf("\n");
}
//8、判断是否走出迷宫
if(currentY==5){
如果走出则给出 |
|