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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 堕落天使 高级黑马   /  2015-9-12 22:58  /  656 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


学习的第一个可以玩的小程序。虽然很简单,但是自己写了之后再运行的时候感觉还是不错的。
  1. #include <stdio.h>
  2. //把地图数组的行数和列数定义成宏。
  3. #define COL 6
  4. #define ROW 6

  5. /**
  6. *  打印地图
  7. *
  8. *  @param map1 地图的数组
  9. */
  10. void print_map(char map1[COL][ROW]){
  11.     for (int i =0; i<COL; i++) {
  12.         for (int j =0; j<ROW; j++) {
  13.             printf("%c",map1[i][j]);
  14.         }
  15.         printf("\n");
  16.     }
  17.    
  18. }
  19. /**
  20. *  判断小人是否移动
  21. *
  22. *  @param map   地图数组
  23. *  @param old_x 小人原来位置的X轴
  24. *  @param old_y 小人原来位置的Y轴
  25. *  @param new_x 小人要走位置的X轴
  26. *  @param new_y 小人要走位置的Y轴
  27. */
  28. void personMove(char map[COL][ROW],int old_x,int old_y,int new_x,int new_y){
  29.     char temp;
  30.     temp=map[old_x][old_y];
  31.     map[old_x][old_y]=map[new_x][new_y];
  32.     map[new_x][new_y]=temp;
  33. }
  34. int main(int argc, const char * argv[]) {
  35.     char map[COL][ROW]={
  36.         {'#','#','#','#','#','#'},
  37.         {'#','0','#',' ',' ',' '},
  38.         {'#',' ','#','#',' ','#'},
  39.         {'#',' ',' ','#',' ','#'},
  40.         {'#','#',' ',' ',' ','#'},
  41.         {'#','#','#','#','#','#'}};
  42.     char dir;
  43.     char ch;
  44.     print_map(map);
  45.     //x和y是小人位置的下标
  46.     int x,y;
  47.     x=y=1;
  48.     printf("请输入一个方向:w或W表示上,s或S表示下,a或A表示左,d或D表示右,q或Q代表退出!\n");
  49.     while (1) {
  50.         scanf("%c",&dir);
  51.         scanf("%c",&ch);
  52.         switch (dir) {
  53.             case 'w':
  54.             case 'W':
  55.                 if (map[x-1][y]==' ') {
  56.                     personMove(map, x, y, x-1, y);
  57.                     print_map(map);
  58.                     x--;
  59.                 }
  60.                 break;
  61.             case 's':
  62.             case 'S':
  63.                 if (map[x+1][y]==' ') {
  64.                    personMove(map, x, y, x+1, y);
  65.                     print_map(map);
  66.                     x++;
  67.                 }
  68.                 break;
  69.             case 'A':
  70.             case 'a':
  71.                 if (map[x][y-1]==' ') {
  72.                     personMove(map, x, y, x, y-1);
  73.                     print_map(map);
  74.                     y--;
  75.                 }
  76.                 break;
  77.             case 'd':
  78.             case 'D':
  79.                 if (map[x][y+1]==' ') {
  80.                     personMove(map, x, y, x, y+1);
  81.                     print_map(map);
  82.                     y++;
  83.                 }
  84.                 break;
  85.             case 'q':
  86.             case 'Q':
  87.                 return 0;
  88.             default:
  89.                 break;
  90.         }
  91.         if (y==5) {
  92.             printf("恭喜你,你出来了!\n");
  93.             return 0;
  94.         }
  95.     }
  96.     return 0;
  97. }
复制代码





1 个回复

倒序浏览
赞·······································
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马