语言:c++
游戏引擎:cocos2d-x
一、项目介绍:
这个游戏我实现了90年经典坦克大战的部分功能
代码和图片资源链接https://download.csdn.net/download/yx______/10664180
<https://download.csdn.net/download/yx______/10664180>
二、 主要设计:
1.地图设计
2.坦克设计
3.子弹设计
4.数据管理
1.地图设计 :
地图从txt文档里面导入,通过stringstream来转化,把数字导入map数组里面,然后遍历创建地图元素,通过switch语句,不同的地图元素层级不一样
2.坦克设计:坦克我写了个坦克类,然后派生出己方坦克类,敌方坦克类,大部分共有的函数都在坦克类里面。
3.子弹设计:发射子弹时,子弹管理类会实例化一个子弹对象,子弹碰到东西后,会进行碰撞检测,如果坦克爆照后,会有一个爆照的效果,是一个7帧的动画,然后会显示获得的分数,否则就只有一个3帧的动画,爆照效果小一点。
4.数据管理:舞台类定义了一个精灵类型敌方坦克容器,当一个新坦克被创建时,容器的最后一个元素会被清除。玩家坦克类定义了一个静态成员生命,每关进去都是4条命。选择关卡类有一个静态成员关卡的数字,每次离开游戏场景时,这个值会加一。坦克管理类定义了一个地方坦克的数组,存储各种类型的坦克的数目,玩家坦克类定义了静态成员分数,每次敌方坦克死亡后都会加分,结算界面会与本地存储的最高纪录相比较,会更新
三、难点攻克
1.坦克移动
2.坦克动画
3.坦克碰撞检测
4.子弹碰撞检测
1.坦克移动:定义了一个全局变量类,这个类定义了bool型各个键的静态变量,在游戏场景类
按住上键后会把上键对应的变量设为true,停止按住时会设为false,然后在玩家
坦克类,每一帧都会检测各个变量的值,如果为true,就会让坦克执行对应的操
作。坦克速度设置的为1.5,移动时每一帧都会移动1.5个距离,坦克的图片每一
帧都会更新,转换方向时,从图集中调用图片时会换成对应方向的图片,让后就
会移动。
2.坦克动画:坦克在移动的时候有一个移动的动画效果,一般的坦克有2帧。定义了一个成员来
记录当前显示的帧数,每次移动的时候帧数会加一,当达到最大值时,又变回1。
地方最高级的坦克稍微麻烦一点,它还有几种颜色,等级4是银、绿交替,等级3是
银、黄交替,等级2是黄、绿交替,等级1是银,多弄些图片素材在图集中也就行了。
坦克不移动时,帧数不变,就不会有移动的效果了。
3.坦克碰撞检测:(1)坦克与条坦克碰撞检测:碰撞检测函数在坦克类里面,游戏场景类里面有
一个坦克的容器,与容器里面的每个坦克都比较一下坐标就行了。(2)坦克与地图碰撞检测:坦克类
有一个成员方向,然后通过舞台类的一个判断函数判断接下来去的那个格子是不是可以行走。
4.子弹碰撞检测:(1)子弹与坦克碰撞检测:判断子弹是由玩家还是敌方发出的
然后看碰到的坦克是玩家还是敌方,做相应的判断就行。(2)子弹与子弹碰撞检测:
判断是玩家的子弹还是敌方的子弹,敌方的子弹相互之间可以穿过去。
(3)子弹与地图的碰撞检测。与地图边界的碰撞检测:判断子弹的x,y值是否达到边界,达到边界后让其爆炸。
与地图障碍物的碰撞检测:判断子弹接下来去的格子是否可以打,然后执行对应的函数。
再就是打半块砖的问题:用的位运算来判断
热门工具 换一换