栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言《推箱子》游戏设计

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言《推箱子》游戏设计

  1 #include
  2 #include
  3 #include
  4 
  5 int main()
  6 {
  7     // 定义地图
  8     int map[8][8] = {
  9         {0,0,1,1,1,1,0,0},
 10         {0,0,1,4,4,1,0,0},
 11         {0,1,1,0,4,1,1,0},
 12         {0,1,0,0,3,4,1,0},
 13         {1,1,0,3,0,0,1,1},
 14         {1,0,0,1,3,3,0,1},
 15         {1,0,0,2,0,0,0,1},
 16         {1,1,1,1,1,1,1,1},
 17         };
 18 
 19     // 定义初始位置
 20     char x = 6,y = 3;
 21 
 22     // 定义步数变量
 23     short step = 0;
 24 
 25     for(;;)
 26     {
 27         system("clear");    // 清屏
 28         int cnt = 0;
 29         for(int i=0;i<8;i++)
 30             {
 31                 for(int j =0;j<8;j++)
 32                 {
 33                     switch(map[i][j])   // 打印地图
 34                     {
 35                         case 0:printf("  ");break;
 36                         case 1:printf("# ");break;
 37                         case 2:case 6:printf("@ ");break;
 38                         case 3:printf("$ ");break;
 39                         case 4:printf("o ");break;
 40                         case 7:printf("$ ");cnt++;break;
 41                     }
 42                 }
 43                 printf("n");
 44             }
 45             if(cnt == 4)   // 判断是否结束
 46             {
 47                 printf("游戏结束,一共用了%d步n",step);
 48                 return 0;
 49             }
 50             char ox = 0,oy = 0;
 51             switch(getch())   // 获取方向键(以统一偏移量定义下一步)
 52             {
 53                 case 183:ox--;break;
 54                 case 184:ox++;break;
 55                 case 186:oy--;break;
 56                 case 185:oy++;break;
 57             }
 58 
 59             if(0 == map[x+ox][y+oy] || 4 == map[x+ox][y+oy])
 60             {
 61                 map[x+ox][y+oy] += 2;
 62                 map[x][y] -= 2;
 63                 x += ox;
 64                 y += oy;
 65                 step++;
 66             }
 67             else if(3 == map[x+ox][y+oy] || 7 == map[x+ox][y+oy])
 68             {
 69                 if(0 == map[x+ox*2][y+oy*2] || 4 == map[x+ox*2][y+oy*2])
 70                 {
 71                     map[x+ox*2][y+oy*2] += 3;
 72                     map[x+ox][y+oy] -= 1;
 73                     map[x][y] -= 2;
 74                     x += ox;
 75                     y += oy;
 76                     step++;
 77                 }
 78             }
 79     }
 80 }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/511188.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号