黑马程序员技术交流社区

标题: C语言指针实现"迷宫游戏" [打印本页]

作者: 滔哥    时间: 2015-4-23 15:24
标题: C语言指针实现"迷宫游戏"
  1. //
  2. //  main.c
  3. //  迷宫游戏
  4. //
  5. //  Created by carry on 15/4/23.
  6. //  Copyright (c) 2015年 carry.cn. All rights reserved.
  7. //

  8. #include <stdio.h>
  9. #define row 6
  10. #define col 6
  11. #define street ' '

  12. //定义一个打印地图的函数
  13. void printmap(char map[row][col]){
  14.     /**
  15.      @author Brother Tao, 15-04-23 11:04:50
  16.      @brief  打印地图,重新绘制地图
  17.      @param map 地图数组
  18.      */
  19.     for (int i=0; i<row; i++) {
  20.         
  21.         for (int j=0; j<col; j++) {
  22.             printf("%c",map[i][j]);
  23.             
  24.         }
  25.         printf("\n");
  26.     }
  27.    
  28. }
  29. /**
  30. @author Brother Tao, 15-04-23 11:04:48

  31. @brief  交换小人与路的位置
  32. @param map 地图
  33. @param oldX 小人原来的位置X
  34. @param oldY 小人原来的位置Y
  35. @param newX 小人新位置X
  36. @param newY 小人新位置Y
  37. @since <#version number#>
  38. */
  39. //定义一个交换小人判断位置的函数
  40. void pepole(char map[row][col],int oldX,int oldY,int newX,int newY,int *px,int *py){
  41.    
  42.     char temp;
  43.     if (map[newX][newY]==street) {
  44.         temp=map[oldX][oldY];
  45.         map[oldX][oldY]=map[newX][newY];
  46.         map[newX][newY]=temp;
  47.         *px = newX;// *px获取地址px里的内容 使用newX赋值给*px传递的变量
  48.         *py = newY;
  49.     }
  50.    

  51. }

  52. int main(int argc, const char * argv[]) {
  53.     // insert code here...
  54.     //定义变量(小人位置变量,路的位置' '变量),定义地图,打印地图
  55.              char map[row][col]={
  56.             {'#','#','#','#','#','#'},
  57.             {'#','1','#','#',' ','#'},
  58.             {'#',' ','#','#',' ',' '},
  59.             {'#',' ',' ','#',' ','#'},
  60.             {'#','#',' ',' ',' ','#'},
  61.             {'#','#','#','#','#','#'}
  62. };
  63.     /*------------------------------------*/
  64.     int currentX=1;//定义小人坐标X
  65.     int currentY=1;//定义小人坐标Y
  66.     int *px = ¤tX; //定义指针,函数传递小人变化的位置
  67.     int *py = ¤tY;
  68.     char direction;//接受用户输入的数据
  69.    
  70.     /*------------------------------------*/
  71.     printmap(map);//打印地图
  72.    

  73.     printf("游戏玩法:w.上 s.下 a.左 d右\n");//提示用户玩法
  74.    
  75.     //判断用户输入交换小人的位置
  76.     while (1) {
  77.         
  78.         scanf("%c",&direction);//接受用户输入的方向
  79.         rewind(stdin);//清空缓冲区
  80.         switch (direction) {
  81.             case 'w':
  82.             case 'W':
  83.                 pepole(map, currentX, currentY, currentX-1, currentY,px,py);
  84.                
  85.                 break;
  86.                
  87.             case 's':
  88.             case 'S':
  89.                 pepole(map, currentX, currentY, currentX+1, currentY,px,py);
  90. //
  91.                 break;
  92.                
  93.             case 'a':
  94.             case 'A':
  95.         
  96.                 pepole(map, currentX, currentY, currentX, currentY-1,px,py);
  97. //
  98.                 break;
  99.                
  100.             case 'd':
  101.             case 'D':
  102.                 pepole(map, currentX, currentY, currentX, currentY+1,px,py);
  103. //
  104.                 break;
  105.                
  106.             default:
  107.                 break;
  108.         }

  109.         
  110.         printmap(map);//重绘地图
  111.         
  112.         if (currentY==5) {//判断用户是否走出迷宫
  113.             printf("哇哦,恭喜你走出来了\n");
  114.             break;
  115.         }
  116.     }
  117.    
  118.    
  119.    
  120.     return 0;
  121. }
复制代码



作者: guyinghua901018    时间: 2015-4-23 20:57
涛哥也是蛮拼的,来顶下
作者: 天涯何处    时间: 2015-4-28 00:05
世界那么大我想去看看

作者: 我本灬无名    时间: 2015-6-13 22:11
看不懂。。。
作者: 王鹏    时间: 2015-6-13 22:15
mark from iOS0612
作者: 小路8866    时间: 2015-6-13 22:25
顶一下,一开始以为是飞行棋游戏,那个挺麻烦的
作者: 离经叛道的女子    时间: 2015-6-13 22:43
我们马上就学到啦 好厉害的样子
作者: fixer    时间: 2015-6-13 23:32
棒棒棒棒棒哒
作者: fixer    时间: 2015-6-13 23:34
棒棒棒棒棒哒
作者: ⒈苆都s.兲憶    时间: 2015-6-13 23:59
dingding!!!
作者: hanxujie    时间: 2015-6-14 11:56
此代码,我搞了一晚上,就是各种的不行,哎郁闷啊!
作者: 青青河边草Rt    时间: 2015-6-16 23:51
现在还看不懂怎么破!
作者: chensc    时间: 2015-6-17 05:45
学习学习!
作者: 李言    时间: 2015-6-17 09:01
来顶一下,嘿嘿
作者: CQY    时间: 2015-6-17 09:22
滔哥很强大哇,更重要的是,我一直觉得滔哥的头像好帅的说
作者: zale    时间: 2015-9-14 19:52
谢谢分享
作者: zou897591783    时间: 2016-7-21 00:10
好厉害哦
作者: jilaiyuan    时间: 2016-7-21 09:49
学习学习~
作者: anan安    时间: 2016-7-27 22:11
怎么实现呢?我想玩一下
作者: 悄然林静    时间: 2016-7-27 23:27
顶,太给力了
作者: 悄然林静    时间: 2016-7-27 23:30
顶,太给力了
作者: linguoqun    时间: 2016-7-31 22:32
好厉害。提问的人和回答的人都很厉害。
作者: 徐荘    时间: 2016-7-31 23:48
我去。。。黑马帝,感谢你的分享
作者: 名字不太重要    时间: 2017-3-21 00:39
6的飞起




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