A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. #include <stdio.h>
  2. #define ROW 6
  3. #define COL 6
  4. /**
  5. *  打印地图
  6. *
  7. *  @param arr 数组名
  8. */
  9. void printMap(char arr[ROW][COL]){
  10.     for (int i = 0; i<ROW; i++) {
  11.         for (int j = 0; j<COL; j++) {
  12.             printf("%c",arr[i][j]);
  13.         }
  14.         printf("\n");
  15.     }


  16. }
  17. /**
  18. *  移动
  19. *
  20. *  @param map  地图
  21. *  @param oldX 现在的位置X
  22. *  @param oldY 现在的位置Y
  23. *  @param newX 新位置X
  24. *  @param newY 新位置Y
  25. */
  26. void move( char map[ROW][COL],int oldX,int oldY,int newX,int newY){

  27.     int temp;
  28.     temp = map[newX][newY];
  29.     map[newX][newY] = map[oldX][oldY];
  30.     map[oldX][oldY] = temp;
  31. }
  32. int main(int argc, const char * argv[]) {
  33.     // 定义变量存储地图,方向,路,小人的现在位置和下一个位置
  34.     char direction, street = ' ';
  35.     int currentX = 1, nextX = 1,flag = 1;
  36.     int currentY = 1, nextY = 1;
  37.     char map [ROW][COL]= {
  38.         {'#','#','#','#','#','#'},
  39.         {'#','0','#','#',' ',' '},
  40.         {'#',' ','#','#',' ','#'},
  41.         {'#',' ',' ','#',' ','#'},
  42.         {'#','#',' ',' ',' ','#'},
  43.         {'#','#','#','#','#','#'}
  44.     };
  45. //    打印地图
  46.     printMap(map);
  47.     //    循环控制
  48.     while (flag) {
  49.         nextX = currentX;
  50.         nextY = currentY;
  51.     //    提示玩法并提示用户输入方向
  52.         printf("请输入方向:w.上 s.下 a.左 d.右 q.退出\n");
  53.         scanf("%c",&direction);
  54.         getchar();
  55. //    判断方向
  56.         switch (direction) {
  57.             case 'w':
  58.             case 'W':
  59.                 nextX--;
  60.                 break;
  61.             case 's':
  62.             case 'S':
  63.                 nextX++;
  64.                 break;
  65.             case 'a':
  66.             case 'A':
  67.                 nextY--;
  68.                 break;
  69.             case 'd':
  70.             case 'D':
  71.                 nextY++;
  72.                 break;
  73.             case 'q':
  74.             case 'Q':
  75.                 printf("程序正在退出...\n");
  76.                 printf("程序退出!\n");
  77.                 return 0;
  78.                 break;
  79.                
  80.             default:
  81.                 break;
  82.         }
  83. //        判断小人下一个位置是不是路
  84.         if (street == map[nextX][nextY]) {
  85.             //    是路的话,交换,更改小人的位置
  86.             move(map,nextX,nextY,currentX,currentY);
  87.             currentX = nextX;
  88.             currentY = nextY;
  89.         }
  90.         
  91. //    重新打印地图
  92.         printMap(map);
  93. //    判断小人是否走出来
  94.         if (COL-1 == currentY) {
  95.             printf("恭喜你,重获新生!");
  96.             flag = 0;
  97.         
  98.         }

  99.     }
  100.     return 0;
  101. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马