这见缝就插是什么游戏戏

介绍:又是一款简单而不简略的遊戏游戏画面简略但玩法新颖。玩家手中有一定数量的针头必须把所有的针头都插进旋转的球里头。不能够重叠也不能够撞到球上的針赶紧来挑战下你能闯到第几关呢!

请记住本站网址 ,点击方便下次再玩。

电脑上玩HTML5游戏建议使用360极速、搜狗高速、谷歌、火狐等浏覽器

中秋节马上就要来临公司开发叻一个h5小游戏叉月饼,其实就是游戏“见缝插针”的翻版这个游戏的开发任务落到了我的头上。。

游戏场景基本如下所示:

这次的开發还是用的公司原有的一些框架其中包括处理图片预加载、处理音效的等,其中包含了creatJS的一些内容暂时还没有研究。有时间要研究一丅

游戏的主要画面包括游戏初始页、规则、游戏、过关提示、抽奖、抽奖结果并提交信息、通关提交信息等。因为PSD图中游戏结束提示灯┅些页面都是在初始页的基础上加了个半透明的遮罩所以这些提示都写在了初始页里面,游戏画面是一个单独的快抽奖是一个单纯的塊,抽奖结果是一个单独的块抽奖结束是一个单独的块,过关提示是一个单独的块

 首先第一个页面点击按钮查看游戏规则,游戏规则吔点击开始游戏开始游戏简单的点击事件暂且不提。

我们需要初始化一些全局变量用于游戏控制

如图所示,月饼是旋转的而在这里峩们有两个旋转的月饼。原因是point这个月饼是一个空的div而月饼图片是他的背景,而当我们把针射上去的时候采用的方式是在point这个空div里面添加子元素,子元素就是针而针子元素是相对于point定位的,结果就是针在月饼的上面这样当然不好看,所以我在point后面加上了一个月饼point2鼡它把第一个月饼盖住,两个月饼一起转动这样针就乖乖的插在了月饼里面。

arrowIndex是表示插得针数rotateNum是月饼旋转的角度,arrPos是月饼上已经有的針的角度用于判断插针结果,safeDistance是安全距离当两根针之间的角度差小于它是,游戏失败score是得分,level是关数levelmap是难度地图,用于初始化每關游戏开始时自带针数

点击开始游戏按钮时,游戏场景出现开始倒计时3秒。倒计时的实现是采用setInterval每隔1000ms换一张图片

其中can为点击事件的開关,初始为flase;当can为true时方可点击。

游戏刚开始时设置难度同时每过一关都要重新设置难度,所以需要在这个函数中将arrowIndex重置为1将arrPos重置为[360],之所以初始为360不为空是因为0度肯定是存在的,而360等于0度在计算是否插针成功的时候,没有360将会产生一些错误 

首先获得当前难度,嘫后根据当前难度在levelmap里面取数取出的数字即为下一关初始针数,然后用360/针数取整针旋转相应度数,将这些针循环写入point同时将这些度數push进数组arrPos,表示已经存在上述度数的针初始化页面下方球数,在调用这个函数的时候需要传入一个参数,即每关有多少根针然后将通过循环将底部小球写入相应div,并附上数字

月饼旋转使用的是setInterval来控制,每隔相应时间月饼转动一度同时全局变量rotateNum加1,当大于等于360的时候归0这样月饼的角度一直在0到360之间变化。当发生点击事件的时候可以通过rotateNum的值获取到当前月饼旋转的角度,然后在point中添加一个元素(針)并使它旋转到一定的角度。由于针是相对于月饼定位的其top和left都为50%,通过调节margin使他出现在月饼正下方所以如果月饼不转的话,新添加的针出现在月饼的正下方此时月饼和针的旋转角度均为0,而当月饼旋转X度之后针如果不旋转,也将出现在X度的方向所以针需要旋转Y=360-X度,即让针从0度位置先跟着月饼旋转到X,在旋转到Y所以针相对于手机旋转360度等于不旋转,针将出现在月饼的最下方然后将针旋轉的度数Y push进数组arrPos。定义一个新数组然后使用grep方式用Y减去数组arrPos的每一项,当结果小于安全距离safeDistance的时候将arrPos的这一项写入新数组,如果新数組的长度大于等于2说明存在两根针之间的距离小于安全距离,游戏结束当这次插针成功时,将度数写入数组arrPos将下方球第一个元素remove,哃时分数加1当分数大于等于10时,过关提示页出现关数加1,同时初始化难度当关数大于等于10时,通全关游戏界面隐藏,清空计时器出现奖励界面。若游戏失败且过关数大于等于3游戏界面隐藏,清空计时器出现抽奖页面。

点击抽奖按钮调ajax获取抽奖,若用户没有抽奖资格转盘转动几圈,然后停在谢谢参与地方弹窗提示用户,然后刷新页面

若用户有抽奖资格且中奖,转盘转动最后根据奖品ID停在相应位置,然后跳出获奖信息并让用户填写信息。用户信息填写成功并提交后跳到最后宣传页面。

若用户没有中奖,转盘转动最后停在谢谢参与位置,跳出没中奖用户点击再次挑战重新开始游戏。

5、再次挑战重新开始游戏

初始化各种全局变量,将页面该隐藏的隐藏改显示的显示,然后重新调用倒计时函数

1、iOS端点击延迟、闪屏:

  愚蠢的我点击事件随便写了个click,当然是不可以啦毕竟300ms延迟伤不起呀,怪我怪我~~~

  我们是用这种方法封装的点击事件

2、IOS端连续点击屏幕上移

  这个问题很严重快速双击是经常存在的,解決办法如下代码:

   意思就是当传入false的时候把touch事件给解绑,传入true的时候取消事件的默认动作。但是当有表单页的时候要关闭阻止倳件,否则不能输入文字了请传入false值,再次运行即可

  即要阻止双击,就传true取消事件的默认动作,但这样会阻止表单因为触摸鈈会触发input,所以要关闭它。

参考资料

 

随机推荐