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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

老鸟 请关闭,以免发现不良反应。



迷宫的代码。虽然 很简单,但是自己敲出来的。还是挺开心的

  1. //
  2. //  main.c
  3. //  09作业
  4. //
  5. //  Created by Chen on 16/1/16.
  6. //  Copyright © 2016年 Chen. All rights reserved.
  7. //

  8. #include <stdio.h>
  9. #include <stdlib.h>

  10. #define COL 6
  11. #define ROW 8


  12. void print_Map(char arr[COL][ROW],int col,int row){
  13.    
  14.     for (int i=0; i<col; i++) {
  15.         for (int j=0; j<row; j++) {
  16.             printf("%c",arr[i][j]);
  17.         }
  18.         printf("\n");
  19.     }
  20. }

  21. //小人的移动

  22. void personMove(char map[COL][ROW],int oldX,int oldY,int newX,int newY){
  23.     char temp;
  24.     temp = map[oldX][oldY];
  25.     map[oldX][oldY]= map[newX][newY];
  26.     map[newX][newY]= temp;
  27. }


  28. int main(int argc, const char * argv[]) {
  29.    
  30.     //定义变量
  31.     int currentX=1;//当前小人的下标X位置
  32.     int currentY=1;//当前小偷的下标Y位置
  33.     char way=' ';//路
  34.     //接受输入的方向
  35.     char ch;
  36.     //定义地图
  37.     char map[COL][ROW]={
  38.         {'#','#','#','#','#','#','#','#'},
  39.         {'#','O','#','#','#','#','#','#'},
  40.         {'#',' ',' ','#',' ',' ',' ','#'},
  41.         {'#','#',' ','#',' ','#',' ','#'},
  42.         {'#','#',' ',' ',' ','#',' ',' '},
  43.         {'#','#','#','#','#','#','#','#'}
  44.     };
  45.    
  46.     //打印地图
  47.     print_Map(map, COL, ROW);
  48.     printf("请移动小人,w.上 s.下 a.左 d.右 q.退出\n");
  49.    
  50.    
  51.     while (1) {
  52.         //将控制台输出的信息清空
  53.         //system("clear");
  54.          // 接受输入的方向
  55.         rewind(stdin);//清理输入缓冲区
  56.         scanf("%c",&ch);
  57.         //getchar();(这个地方发现用这个函数没有scanf 上边的那个函数好)
  58.         //判断小人的移动方向
  59.         switch (ch) {
  60.             case 'W':
  61.             case 'w':
  62.                 //小人向上移动;
  63.                 if (map[currentX-1][currentY]== way) {
  64.                     personMove(map,currentX,currentY,currentX-1,currentY);
  65.                     currentX--;
  66.                 }
  67.                 break;
  68.             case 'S':
  69.             case 's':
  70.                 //小人向下移动;
  71.                 if (map[currentX+1][currentY]== way) {
  72.                     personMove(map,currentX,currentY,currentX+1,currentY);
  73.                     currentX++;
  74.                 }
  75.                 break;
  76.             case 'A':
  77.             case 'a':
  78.                 //小人向左移动;
  79.                 if (map[currentX][currentY-1]== way) {
  80.                     personMove(map,currentX,currentY,currentX,currentY-1);
  81.                     currentY--;
  82.                 }
  83.                 break;
  84.             case 'D':
  85.             case 'd':
  86.                 //小人向右移动;
  87.                 if (map[currentX][currentY+1]== way) {
  88.                     personMove(map,currentX,currentY,currentX,currentY+1);
  89.                     currentY++;
  90.                 }
  91.                 break;
  92.             case 'Q':
  93.             case 'q':
  94.                 printf("你智商真低\n");
  95.                 //游戏退出;
  96.                 return 0;
  97.                 break;
  98.         }
  99.         
  100.         //重绘地图
  101.         print_Map(map, COL, ROW);
  102.         
  103.         //走出迷宫
  104.         if (currentY==7) {
  105.             printf("恭喜你出来了\n");
  106.             break;
  107.         }
  108.     }
  109.     return 0;
  110. }
复制代码



9 个回复

倒序浏览
不错不错,很有思路的,不过看了有点难过
回复 使用道具 举报
guyuexing 来自手机 中级黑马 2016-1-16 23:46:05
藤椅
加油加油
回复 使用道具 举报
厉害 厉害
回复 使用道具 举报
明阳天夏 发表于 2016-1-16 23:42
不错不错,很有思路的,不过看了有点难过

咋会事呢?
回复 使用道具 举报

嘿嘿。谢谢夸奖哈。 我会继续努力的
回复 使用道具 举报
对。多做几遍。
自己编码出来 就会记得深了。
慢慢就理解了。
回复 使用道具 举报
学习                                    
回复 使用道具 举报
学以致用表初衷 发表于 2016-1-17 12:02
对。多做几遍。
自己编码出来 就会记得深了。
慢慢就理解了。

听完了, 如果 不练习, 过几天就真的又还给老师了。  学习方法也很重要。
回复 使用道具 举报
有意思的很啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马