本文摘自PHP中文网,作者黄舟,侵删。
功能描述:该游戏实质上是坦克大战+推箱子。玩家控制坦克,在与敌人战斗的同时把物资顺利运送到目的地则可顺利过关,共三个关卡。
游戏说明:上下左右方向键控制移动,空格键发射炮弹,推动所有物资箱子()到目的地(
),则可过关。
代码分析:
由于该游戏分了几个关卡,所以这里首先来看看关卡管理器是如果管理各个关卡的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
|
在初始化阶段,我们首先创建自己的每个关卡的对象,然后调用add方法添加进关卡管理器,之后就可以调用startLevel开始该关卡。这样就可以方便我们之后在每个关卡中的跳转。另外每个关卡所用到的游戏对象也可以在这里传入。在该游戏中,由于每个关卡游戏的逻辑基本相同,因此使用相同的游戏对象。而该游戏的开始界面则使用另一个游戏对象。每个游戏对象的组织形式如下
1 2 3 4 5 6 7 8 9 10 |
|
之后看看游戏对象gameObj具体的的初始化函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
初始化函数中,我们需要初始化的参数有:地图对象,物资数组,玩家对象,还有敌人对象。地图对象可以使用cnGameJS的map,而玩家和敌人对象则继承cnGameJS的sprite。
在每次gameObj的update中,我们需要判断是否所有物资对象已经就位,如果是,则可以跳入下一关。
1 2 3 4 5 6 |
|
另外,在每次update 中,还需要判断子弹是否击中敌人,击中玩家,或物资:
1 |
|
如果击中的是敌人或玩家,则把对应对象从spriteList里删除,这样下次就不会更新和绘制该对象。另外每次子弹击中物体,就产生一个spriteSheet的爆炸动画:
1 2 3 4 5 6 7 8 9 |
|
该动画的spriteSheet图片如下:
生成的动画其实就是每次从不同位置开始把该图片绘制在canvas上,关于spriteSheet动画详情请看:《HTML5游戏框架cnGameJS开发实录:动画篇》。
另外,不同于上次的游戏超级玛丽,该游戏属于地图型。因此在游戏开始阶段就需要设计地图并绘制。地图通过二维矩阵生成,例如第一关的游戏地图对应的二维矩阵如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
以上就是HTML5游戏《坦克后援队》的示例代码分享的详细内容,更多文章请关注木庄网络博客!
相关阅读 >>
HTML5 表单、select 下拉、textarea多行文本的介绍
HTML5设置或返回音频/视频是否应该在结束时再次播放的属性loop
更多相关阅读请进入《HTML5》频道 >>

Vue.js 设计与实现 基于Vue.js 3 深入解析Vue.js 设计细节
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者