如何基于C语言实现推箱子游戏

  介绍

小编给大家分享一下如何基于C语言实现推箱子游戏,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

具体内容如下

代码在vs2013上测试运行。

思想:

1):地图用二维数组实现,箱子,墙壁,人等事物用不同的数字表示,遍历二维数组,遇到不同的数字打印相应的图案即可。
2):按键移动原理:判断要移动的方向是怎样的障碍物,如果理论上可以移动的话,只需把对应位置的数字作相应更改即可。

# include   # include   # include   # include//二维数组:0表示地图上的空地,1代表墙壁,3代表箱子的目的地,4代表箱子,6代表人,7代表箱子与目的地重合;9代表人在箱子的目的地   int  g_map [10] [12],=,   {   ,{1,1,1,1,1,0,0,0,0,0,0,0,},      ,{1,0,0,0,1,0,1,1,1,0,0,0,},      ,{1,0,,4,,0,1,0,1,1,1,1,1,1,},      ,{1,0,,4,6,,1,,0,,1,,0,0,0,,3,,1,},      ,{1,,1,,1,,,,1,,1,,1,,0,0,0,,3,,1,},      ,{1,,1,,1,,0,0,0,0,0,0,0,,3,,1,},      ,{0,,1,,0,0,0,1,0,0,0,0,0,1,},      ,{0,,1,,0,0,0,1,0,0,0,0,0,1,},      ,{0,,1,,0,0,0,1,1,1,1,1,1,1,},      ,{0,1,1,1,1,1,0,0,0,0,0,0,}   },,//g_开头代表全局变量,m_代表成员变量,护士:整形      void  drawMap(),,//画地图   void (),,//上移   void ();,//下移   void 左(),,//左移   void 正确的(),,//右移   void 败阵(),,//结束游戏      POINT  GetGamerPostion();//获取玩家坐标      int  main ()   {   ,//设置窗口标题   ,SetConsoleTitleA(“推箱子“);   ,//修改窗口大小   ,系统(“mode  con 关口=30,行=12“);      ,while  (1)   ,{   ,//清屏   ,系统(“cls");   ,//打印地图   ,drawMap ();   ,游戏结束();   ,char  ch =, _getch();,//从控制台获取输入,获取字符()函数获取按键后要按输入确认,并且输入的字符要在控制台上显示   ,switch  (ch)   ,{   ,case  & # 39; w # 39;: case  72://上   ,();   ,打破;   ,case  & # 39; & # 39;: case  80://下   ,();   ,打破;   ,case  & # 39;一个# 39;:case  75://左   ,左();   ,打破;   ,case  & # 39; d # 39;: case  77://右   ,正确的();   ,打破;   ,}   ,   ,}   ,//系统(“pause");,   ,return  0;   }      void  drawMap ()   {   ,for  (int 小姐:=,0;,小姐:& lt;, 10;,我+ +)   ,{   ,for  (int  j =, 0;, j  & lt;, 12;, j + +)   ,{   ,switch  (g_map[我][j])   ,{   ,case  0://空地   ,printf (“,“);   ,打破;   1://墙,case 壁   ,printf (“■“);   ,打破;   3://箱,case 子的目的地   ,printf (“☆“);   ,打破;   4://箱,case 子   ,printf (“□“);   ,打破;   case  6://人   ,printf (“♀“);   ,打破;   7://箱,case 子与目的地重合   ,printf (“★”);   ,打破;   ,case  9://人站在目的地   ,printf (“♀“);   ,打破;   ,}   ,}   ,printf (“\ n");   ,}   }      void  ()   {   ,//获取玩家坐标   ,POINT  pos =, GetGamerPostion ();//1。人的前面是空的地   ,if  (g_map [pos.x 安康;1][pos.y],==, 0)   ,{   ,g_map [pos.x 安康;1][pos.y],=, 6,,//空地变为人   ,if  (g_map [pos.x] [pos.y],==, 9),//还原原来人的位置   ,{   ,g_map [pos.x] [pos.y],=, 3;   ,}   其他的,   ,g_map [pos.x] [pos.y],=, 0;,   ,}//2。人的前面是目的地   ,if  (g_map [pos.x 安康;1][pos.y],==, 3)   ,{   ,g_map [pos.x 安康;1][pos.y],=, 9,,//原来目的地的位置变为人站在目的地   ,if  (g_map [pos.x] [pos.y],==, 9),//还原人的位置   ,{   ,g_map [pos.x] [pos.y],=, 3;   ,}   其他的,   ,g_map [pos.x] [pos.y],=, 0;,   ,}//3。人的前面是箱子,   ,if  (g_map [pos.x 安康;1][pos.y],==, 4)   ,{//一个。箱子前面是空的地   ,if  (g_map (pos.x 作用;2)[pos.y],==, 0)   ,{   ,g_map (pos.x 作用;2)[pos.y],=, 4,,//空地变为箱子   ,g_map [pos.x 安康;1][pos.y],=, 6,,//原来箱子位置变为人   ,if  (g_map [pos.x] [pos.y],==, 9),//还原人的位置   ,{   ,g_map [pos.x] [pos.y],=, 3;   ,}   其他的,   ,g_map [pos.x] [pos.y],=, 0;   ,}//b。箱子前面目的地   ,if  (g_map (pos.x 作用;2)[pos.y],==, 3)   ,{   ,g_map (pos.x 作用;2)[pos.y],=, 7,,//目的地变为箱子和目的地重合   ,g_map [pos.x 安康;1][pos.y],=, 6,,//原来箱子位置变为人   ,if  (g_map [pos.x] [pos.y],==, 9),//还原人的位置   ,{   ,g_map [pos.x] [pos.y],=, 3;   ,}   其他的,   ,g_map [pos.x] [pos.y],=, 0;   ,}   ,}   ,   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

如何基于C语言实现推箱子游戏