如何使用C语言实现推箱子游戏
这篇文章主要为大家展示了“如何使用C语言实现推箱子游戏”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用C语言实现推箱子游戏”这篇文章吧。
1.前言推箱子是c语言的一个经典的项目
2.游戏效果展示3.项目分析游戏元素:
空地 0
墙壁 1
角色 2
箱子 3
胜利点 4
游戏目的:
玩家控制角色在地图的空地上进行移动,通过推动箱子躲避障碍,将所有的箱子推至胜利点即可成功。
4.地图实现4.1存储地图首先存储地图我们使用数组来进行存储,为什么我们会用到char而不是int?是因为int普遍为4字节,char为1字节,我们就可以大大减少存储地图所需要的内存。如果要写多张地图的话,仅仅将数组扩充至三维即可,作者将会在之后的文章进行说明。
charmap[10][10]={{1,1,1,1,1,1,1,1,1,1},{1,0,0,0,0,1,0,0,0,1},{1,0,0,0,0,1,4,0,0,1},{1,0,0,0,0,1,1,0,0,1},{1,0,0,0,0,1,0,0,0,1},{1,0,0,2,0,0,0,0,0,1},{1,1,1,1,0,0,3,0,0,1},{1,0,0,0,0,0,0,0,0,1},{1,0,0,0,0,0,0,0,0,1},{1,1,1,1,1,1,1,1,1,1}};4.2打印地图
对应地图的打印我们则需要对地图进行遍历,利用switch语句将地图打印在控制台上面。
for(size_ti=0;i<10;i++){for(size_tj=0;j<10;j++){switch(map[i][j]){case0:printf("");//注意一点是两个空格,如果是一个空格的时候会使地图打印出现一些问题break;case1:printf("█");break;case2:printf("♀");break;case3:printf("●");break;case4:printf("☆");break;default:break;}}printf("\n");}5.控制角色移动5.1找到控制的角色
intposX=0,posY=0;for(size_ti=0;i<10;i++){for(size_tj=0;j<10;j++){if(2==map[i][j]||2+4==map[i][j]){posX=i;posY=j;break;//找到角色,记录其所在的x轴和y轴的坐标}}}5.2实现移动
//控制(键盘:WSAD(上下左右))//需要从键盘获取按键(字符)switch(getch())//getch()该方法需要在开头导入#include<conio.h>{case'w':case'W':printf("向上\n");/*向上逻辑:改变数组元素的值以人为参考上面可能是:空地移动墙壁不动成功点移动箱子判断箱子上面是个啥空地移动成功点移动墙壁不动另一个箱子不动*///上面是空地或成功点map[posX][posY]:主角所在的位置if(0==map[posX-1][posY]||4==map[posX-1][posY]){//当前位置人离开map[posX][posY]-=2;//上面位置人过来map[posX-1][posY]+=2;}//上面是箱子(将箱子从点上推走)elseif(3==map[posX-1][posY]||3+4==map[posX-1][posY]){//箱子上面是空地或成功点map[posX-1][posY]:箱子位置if(0==map[posX-2][posY]||4==map[posX-2][posY]){//当前位置人离开map[posX][posY]-=2;//上面位置人过来map[posX-1][posY]+=2;//上面位置箱子离开map[posX-1][posY]-=3;//上面的上面箱子过来map[posX-2][posY]+=3;}}break;case's':case'S':printf("向下\n");break;case'a':case'A':printf("向左\n");break;case'd':case'D':printf("向右\n");break;default:break;}6.判断胜利
对地图遍历搜索,如果发现没有箱子的话,就可以判断为胜利。(size_t是C++里面的东西,size_t相当于unsigned int,这里仅做理解即可,可以用int来代替size_t)
boolisWin(){for(size_ti=0;i<10;i++){for(size_tj=0;j<10;j++){if(map[i][j]==3){returnfalse;}}}returntrue;}
以上是“如何使用C语言实现推箱子游戏”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。