首页 存档 技术 查看内容

实战 | JavaScript实现Fly Bird小游戏

2018-3-30 13:00 |来自: 互联网 393 0

摘要: 1.分析页面结构,理清需求和功能 游戏有三个界面,分别是开始界面,游戏界面和游戏结束界面。 1.1 开始界面 1、游戏的大背景 2、上下移动的游戏标题和翅膀摆动的小鸟 3、start 按钮,点击进入游戏界面 4、一直移动 ...

1.分析页面结构,理清需求和功能

游戏有三个界面,分别是开始界面,游戏界面和游戏结束界面。

1.1 开始界面


1、游戏的大背景

2、上下移动的游戏标题和翅膀摆动的小鸟

3、start 按钮,点击进入游戏界面

4、一直移动的地面


1.2 游戏界面


1、显示越过障碍数量的计分器

2、移动的障碍物,分别是上管道和下管道

3、点击游戏界面,小鸟向上飞起,然后在重力作用下下坠,

4、当小鸟和管道碰撞后,结束界面弹出,同时小鸟落到地面


1.3 结束界面

1、Game over 提示面板

2、OK 按钮


2. 开发“开始界面”

考虑到草地的移动效果,我们在页面中加入两个草地

2.1 HTML


2.2 CSS

将wrapBg中的overflow:hidden 注释掉的页面效果



2.3 JS

小鸟煽动翅膀的效果需要用到逐帧动画的原理

逐帧动画是一种常见的动画形式(Frame By Frame),其原理是在“连续的关键帧”中分解动画动作,也就是在时间轴的每帧上逐帧绘制不同的内容,使其连续播放而成动画。





2.3.1 开始标题的摆动

2.3.2 移动的草地

2.3.3 Start按键


完成后的效果(注释掉了wrapBg中的overflow:hidden )



接下来我们开发“游戏界面”

3. “游戏界面”的开发

游戏界面中有三样元素,分别是“小鸟”,“障碍”,和“计分器”,我们依次来创建相应的对象。

3.1 小鸟

首先,创建小鸟的对象,bird.js文件。

下面,实现点击start按钮时,加载小鸟。(在之前的代码基础上添加)

添加小鸟后的效果



3.2 障碍(上管道和下管道)



障碍分为上管道和下管道,如示意图所示结构嵌套,这样就可以通过随机设置DownDiv2的高度和gapHeight的高度,来改变生成障碍的形态
block.js

公共对象文件baseObj.js,用来提供随机数,和两个矩形div的碰撞检测

下面我的想法是在start按钮点击的时候创建一个block,把这个block存储到数组blocksArr中,在landTimer定时器的方法landRun中检查此数组的长度,如果数组不为空数组,那么就让数组中所有的block移动。

检查数组中最后一个block离开的距离,达到一定距离,就重新new 一个block,添加到数组。

检查数组中第一个block,一旦达到一定位置,就在结构中移除downDivWrap 和 upDivWrap,同时在数组中删除block。


3.3 计分器

游戏中的计分器相对较好实现,我们就实现最大为三位数的计分器吧。
html

css样式

js

实现计数器功能,最重要的是如何判断走过水管的数量,我们以水管的位置来判断。bird的定位left为50px,水管的宽度是62px,当水管越过小鸟的时候,水管距离它父级的定位offsetLeft是 -12px。每当有一个水管到达此位置,score ;
在start按钮的事件处理程序中加入

计数器功能完成。

4.“结束界面”的开发

当小鸟和管道碰撞或者和地面碰撞时候,隐藏计分器,弹出结束面板。
结束界面主要有“结束面板”和“ok”按钮,这里需要为“ok”按钮添加点击事件。

为“OK”按钮添加事件

最终效果


有兴趣的朋友,可以下载代码,然后加上音效。OK,结束。

GitHub代码下载传送门

https://github.com/YangQiGitHub/FlyBird


@IMWeb前端社

本文由作者Runner_Yang授权转发

http://www.jianshu.com/p/45d994d04a25

微信:IMWebTech

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部