- #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;
- }
复制代码 |
|