黑马程序员技术交流社区
标题:
迷宫改进代码_函数精简版(自己打)
[打印本页]
作者:
1wang2huan
时间:
2015-9-2 20:50
标题:
迷宫改进代码_函数精简版(自己打)
#include <stdio.h>
#define ROW 6
#define COL 6
/**
* 打印地图
*
* @param arr 数组名
*/
void printMap(char arr[ROW][COL]){
for (int i = 0; i<ROW; i++) {
for (int j = 0; j<COL; j++) {
printf("%c",arr[i][j]);
}
printf("\n");
}
}
/**
* 移动
*
* @param map 地图
* @param oldX 现在的位置X
* @param oldY 现在的位置Y
* @param newX 新位置X
* @param newY 新位置Y
*/
void move( char map[ROW][COL],int oldX,int oldY,int newX,int newY){
int temp;
temp = map[newX][newY];
map[newX][newY] = map[oldX][oldY];
map[oldX][oldY] = temp;
}
int main(int argc, const char * argv[]) {
// 定义变量存储地图,方向,路,小人的现在位置和下一个位置
char direction, street = ' ';
int currentX = 1, nextX = 1,flag = 1;
int currentY = 1, nextY = 1;
char map [ROW][COL]= {
{'#','#','#','#','#','#'},
{'#','0','#','#',' ',' '},
{'#',' ','#','#',' ','#'},
{'#',' ',' ','#',' ','#'},
{'#','#',' ',' ',' ','#'},
{'#','#','#','#','#','#'}
};
// 打印地图
printMap(map);
// 循环控制
while (flag) {
nextX = currentX;
nextY = currentY;
// 提示玩法并提示用户输入方向
printf("请输入方向:w.上 s.下 a.左 d.右 q.退出\n");
scanf("%c",&direction);
getchar();
// 判断方向
switch (direction) {
case 'w':
case 'W':
nextX--;
break;
case 's':
case 'S':
nextX++;
break;
case 'a':
case 'A':
nextY--;
break;
case 'd':
case 'D':
nextY++;
break;
case 'q':
case 'Q':
printf("程序正在退出...\n");
printf("程序退出!\n");
return 0;
break;
default:
break;
}
// 判断小人下一个位置是不是路
if (street == map[nextX][nextY]) {
// 是路的话,交换,更改小人的位置
move(map,nextX,nextY,currentX,currentY);
currentX = nextX;
currentY = nextY;
}
// 重新打印地图
printMap(map);
// 判断小人是否走出来
if (COL-1 == currentY) {
printf("恭喜你,重获新生!");
flag = 0;
}
}
return 0;
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2