黑马程序员技术交流社区

标题: 迷宫分享 [打印本页]

作者: XiaoBaoMi    时间: 2015-6-26 21:40
标题: 迷宫分享
  1. #include <stdio.h>

  2. #define X 5
  3. #define Y 3

  4. void printMap(char map[X][Y]);
  5. char *randomMap();
  6. int main() {
  7.     char map[X][Y] = {
  8.         {'#', '#', '#'},
  9.         {'O', ' ', '#'},
  10.         {'#', ' ', ' '},
  11.         {'#', '#', '#'},
  12.         {'#', '#', '#'}
  13.     };
  14.     printf("这是一个小迷宫\n");
  15.     printMap(map);
  16.     int currentX = 1, currentY = 0;
  17.    
  18.     char control = ' ';
  19.     while (currentY != 2) {
  20.         printf("请输入您要走的方向\n");
  21.         scanf("%c",&control);
  22.         getchar();
  23.         switch (control) {
  24.             case 'w':
  25.             case 'W':
  26.             {
  27.                 char middle = ' ';
  28.                 if (map[currentX - 1][currentY]!= '#') {
  29.                     middle = map[currentX][currentY];
  30.                     map[currentX][currentY] = map[currentX - 1][currentY];
  31.                     map[currentX][currentY] = middle;
  32.                     printMap(map);
  33.                     currentX--;
  34.                     break;
  35.                 }else{
  36.                     printf("您撞墙了,不要闹\n");
  37.                 }
  38.                
  39.             }
  40.                
  41.             case 'a':
  42.             case 'A':
  43.             {
  44.                 char middle = ' ';
  45.                 if (map[currentX][currentY - 1]!= '#') {
  46.                     middle = map[currentX][currentY];
  47.                     map[currentX][currentY] = map[currentX][currentY - 1];
  48.                     map[currentX][currentY] = middle;
  49.                     printMap(map);
  50.                     currentY--;
  51.                     break;
  52.                 }else{
  53.                     printf("您撞墙了,不要闹\n");
  54.                 }
  55.                
  56.             }
  57.                 break;
  58.                
  59.             case 's':
  60.             case 'S':
  61.             {
  62.                 char middle = ' ';
  63.                 if (map[currentX + 1][currentY]!= '#') {
  64.                     middle = map[currentX][currentY];
  65.                     map[currentX][currentY] = map[currentX + 1][currentY];
  66.                     map[currentX + 1][currentY] = middle;
  67.                     printMap(map);
  68.                     currentX++;
  69.                     break;
  70.                 }else{
  71.                     printf("您撞墙了,不要闹\n");
  72.                 }
  73.                
  74.             }
  75.                 break;
  76.                
  77.             case 'd':
  78.             case 'D':
  79.             {
  80.                 char middle = ' ';
  81.                 if (map[currentX][currentY + 1]!= '#') {
  82.                     middle = map[currentX][currentY];
  83.                     map[currentX][currentY] = map[currentX][currentY + 1];
  84.                     map[currentX][currentY + 1] = middle;
  85.                     printMap(map);
  86.                     currentY++;
  87.                     break;
  88.                 }else{
  89.                     printf("您撞墙了,不要闹\n");
  90.                 }
  91.                
  92.             }
  93.                
  94.                
  95.             default:
  96.                 break;
  97.         }
  98.    
  99.     }
  100.     printf("逃出生天!\n");
  101.     return 0;
  102. }

  103. void printMap(char map[X][Y])
  104. {
  105.     for (int i = 0; i < X; i++) {
  106.         for (int j = 0; j < Y; j++) {
  107.             printf("%c  ",map[i][j]);
  108.         }
  109.         printf("\n");
  110.     }
  111.    
  112. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2