黑马程序员技术交流社区

标题: 简易迷宫代码实现 [打印本页]

作者: 木冉    时间: 2015-11-17 12:18
标题: 简易迷宫代码实现

  1. #include <stdio.h>
  2. #define ROW 6
  3. #define COL 12

  4. int X=1,Y=1,i,j;
  5. char direction,temp,lu = ' ';

  6. void printMap(char map[ROW][COL]){
  7.         for(i=0;i<ROW;i++){
  8.                 for(j=0;j<COL;j++){
  9.                         printf("%c",map[i][j]);
  10.                 }
  11.                 printf("\n");
  12.         }
  13. }
  14. void peopleMove(char map[ROW][COL],int oldX,int oldY,int newX,int newY){
  15.                         temp = map[oldX][oldY];
  16.                         map[oldX][oldY] = map[newX][newY];
  17.                         map[newX][newY] = temp;
  18.                         //oldX--;
  19. }
  20. int main(){

  21.         char map[ROW][COL]={
  22.                         {'#','#','#','#','#','#','#','#','#','#','#','#'},
  23.                         {'#','O','#','#',' ',' ',' ','#','#','#','#','#'},
  24.                         {'#',' ','#','#',' ','#',' ','#',' ',' ',' ','#'},
  25.                         {'#',' ',' ','#',' ','#',' ','#',' ','#',' ','#'},
  26.                         {'#','#',' ',' ',' ','#',' ',' ',' ','#',' ',' '},
  27.                         {'#','#','#','#','#','#','#','#','#','#','#','#'}
  28.         };
  29.        
  30.        
  31.         printMap(map);
  32.         //printf("请控制线小人方向,w:上;s:下;a:左;d:右,请输入:\n");
  33.         while(1){
  34.                 printf("请控制线小人方向,w:上;s:下;a:左;d:右,请输入:\n");
  35.                 scanf("%c",&direction);
  36.                 getchar();//至关重要,必须加,用于抵消输入时的换行按钮
  37.                 switch(direction){
  38.                 case 'w':
  39.                 case 'W':
  40.                         if(map[X-1][Y] == lu){
  41.                                 peopleMove(map,X,Y,X-1,Y);
  42.                                 X--;
  43.                         }
  44.                         break;
  45.                 case 's':
  46.                 case 'S':
  47.                         if(map[X+1][Y] == lu){
  48.                                 peopleMove(map,X,Y,X+1,Y);
  49.                                 X++;
  50.                         }
  51.                         break;
  52.                 case 'a':
  53.                 case 'A':
  54.                         if(map[X][Y-1] == lu){
  55.                                 peopleMove(map,X,Y,X,Y-1);
  56.                                 Y--;
  57.                         }
  58.                         break;
  59.                 case 'd':
  60.                 case 'D':
  61.                         if(map[X][Y+1] == lu){
  62.                                 peopleMove(map,X,Y,X,Y+1);
  63.                                 Y++;
  64.                         }
  65.                         break;
  66.                 case 'q':
  67.                 case 'Q':
  68.                         return 0;
  69.                         break;
  70.                 default :
  71.                         printf("请重新输入\n");
  72.                         break;
  73.                 }
  74.                 printMap(map);
  75.                 if(Y == COL-1){
  76.                         printf("恭喜你,走出来了!\n");
  77.                         return 0;
  78.                 }
  79.                
  80.         }
  81.                 return 0;
  82.         }
复制代码
练习老师所讲代码,应用与实现





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