Skip to content
  • 澳门皇冠体彩
  • 皇冠国际娱乐
  • 皇冠最新网站
  • 皇冠注册

澳门皇冠体彩 | 皇冠注册 | 皇冠最新网站 | 皇冠国际娱乐

澳门皇冠体彩-邀请您体验K8娱乐
  • Home
  • 澳门皇冠体彩
  • 老虎机网页版:教你用代码实现一个网页老虎机游戏
澳门皇冠体彩
26 6 月 2023

老虎机网页版:教你用代码实现一个网页老虎机游戏

教你用代码实现一个网页老虎机游戏

前两天小编在B站看到一个AE MG动画,动画的内容如下:

这个动画还是挺有意思的,但是小编第一个反应这要是哪一天某位ui姐姐或产品姐姐给小编提了这样子的需求,那小编岂不是当场要自闭?我本着自己的好奇心,实现了一个简易版的老虎机:

老虎机的整体外观样式还是比较好写的,对老虎机的外观布局如果有兴趣的话可以直接参考代码,小编就不一一介绍了。文章主要介绍的是老虎机中间三个小格子和机身动画的一些实现要点。(读者想实操的话也可以自己找一张背景图当作老虎机的背景,这里小编只是自己好奇而已所以就用各种基础布局和样式实现的老虎机)

  • 格子中数字的真面目是什么?

  • 数字列表滚动前的要点

  • 老虎机网页版

  • 格子中的数字列表是怎么滚动的?

  • “无限滚动”是怎么实现的?

  • 第二个和第三个格子的延迟滚动怎么实现的?

  • 随机的滚动结果是怎么实现的?

  • 游戏机是怎么抖动起来的?

  • 重置游戏的实现及要注意的点

  • 怎么获取老虎机的游戏结果?

这个问题其实很简单,格子中的内容单纯只是一个ul列表,我是只是给格子添加了overflow:hidden使格子外的数字进行了隐藏。澳门皇冠体彩咱们先把一个格子的数字列表拿出来讲,我们可以看到整个滚动过程中只有“1~6”共6个数字,我们可以先把这6个数字的列表给实现下。

我们利用的是ul 和 li标签做出的列表,在布局中小编只写了ul,虽然效果图中只有1~6 6种情况,但是后面可能会有更多的游戏结果选项,所以li标签就不写死在页面中,li标签通过javaScript的形式添加到ul标签中。

(这里为了方便读者读懂代码我先解释一下,小编在一开始考虑老虎机里面的内容以后可能是图片而不是数字,所以在很多地方变量或者className的命名都名为与“images”相关。)

这样子我们就可以获得这样的一个ul列表:

同理,第二个格子和第三个格子也可以利用相同的方式构造出相同的数字列表。通过给ul和li添加样式之后的效果如图:

tip: 读者可以留意一下,firstImagesList代表的是第一个数字列表,secondsImagesList为第二个数字列表,thirdImagesList为第三个数字列表。其中代码:

所以我们在列表移动之前要做一件事情,我们要把这个列表的初始化布局给调整一下,将全部列表都向上移动,使数字“1”移动到格子中去。

我们先声明一个初始化三个数字列表定位方法,其中参数startTranslateYHeight代表整个列表要向上移动的距离。

有了移动的方法之后,我们要计算出列表要向上移动的距离startTranslateYHeight。获取向上移动距离的步骤包括:

  1. 声明列表单独一项也就是单个li的高度,已知li标签的高度为136px;

  2. 获取一列的高度,也就是整个ul标签的高度,这个三个列表的高度都一样大,所以我们取第一个列表利用dom的内置属性scrollHeight获得列表的高度;

  3. 因为整个列表向上移动到最后数字1会留在格子中,列表中全部有6个数字,我们只需要向上移动5个数字的高度即可。也就是整个整个列表的高度减去一个li标签的高度就是我们要列表向上移动的距离。

有了向上移动的具体距离后,我们只要执行我们的初始化定位方法initPosition()方法即可。

前面我们也提到了其实滚动的原理利用的是CSS3的transform:translateY()进行移动。因为我们游戏是通过点击手柄开始的,所以我们给手柄添加一个点击事件,并在事件中给列表进行滚动,我们暂时默认滚动到最后一个数字,不考虑随机结果的情况。

如果只是滚动到最后一个数字那还是比较容易的,那我们只需要将向上移动的距离还原为0就可以了,这样子就能达到向下移动的效果。

我们来看一下现阶段的效果:

是不是少了点什么对吧?没错,少了滚动动画。我们只需要在游戏开始时给列表加上过渡效果即可。可能有人会问为什么要在游戏开始时再加而不是一开始写样式时先写上transtion过渡。原因是这样子阿:因为小编后续要考虑到重置游戏的问题,重置过程列表会回到最开始的定位处,如果说重置过程也有过渡样式那是不太合理的,为了能够保证过渡样式是可控的小编就定义了一个添加过渡的方法,还有一个删除过渡的方法,方便我们想要有过渡动画就加上,不想有过渡动画就删除。

下面的代码意思就是分别给每个列表添加/删除过渡样式类名(className),删除过渡我们会在重置动画中使用到。

然后我们只需要只开始游戏方法中调用添加过渡方法即可:

到这里我们已经实现了数字列表的滚动效果,但是我们只是做了个简单的从1~6的滚动,并没有做到从头开始的效果。简单来说就是滚动得没有像效果图中那么“持久”。我们接下来就是来实现一下“从头开始”,“无限滚动”的效果。

效果图中我们可以看到当数字6滚动结束之后应该会重数字1开始重新滚动,话不多说我们直接揭开谜底。

可能有的小伙伴看到这里就明白小编是怎么实现的了。其实我这里并没有实现所谓的“无限滚动”,我只是把初始化的数组按倍数给扩充了很多分,使得整个列表变得非常得长,以至于在短时间内的过渡效果中整个列表看着像是在“无限滚动”。

那么此时前面添加li标签的代码就得修改一下了,将initImageArr修改为新的选项列表imagesArr

至此我们虚假的无限滚动就已经实现完成了(如果打灭了你们对无限滚动的期待的话请不要打小编,小编心里也苦,真正的无限滚动好像不太好写,有感兴趣的小伙伴要是知道怎么无限滚动就告诉我哈,小编也来学习学习)。

无限滚动介绍完之后我们来介绍一下延迟滚动的问题,我们可以看到效果图中第二个格子是等第一个格子滚动一小会儿后才开始滚动的,第三个格子也是一样的。

其实延迟滚动实现也很简单,我们只需要给第二个数字列表和第三个数字列表各自的滚动方法中设置个定时器即可。

随机的滚动结果解释起来可能会比较难以理解一点。我们再回顾一下,在上面我们实现向下滚动的原理是将向上移动的距离还原为0('translateY(0))来实现的。那试想一下如果我们还原的结果不是0,而是一个数字的高度呢?

Tip: 一个数字的高度也就是一个li标签的高度,前面我们已知一个li标签高度是136px

我们来改写代码试试:

效果如下:

我们可以看到,如果我们将定位只还原到translateY(-136px),那滚动的结果会是5。以此类推,如果我们只还原到0、-136、-136 * 2、-136 * 3、-136 * 4、-136 * 5(单位都为px)、那么我们就可以在数字列表滚动中得到6,5,4,3,2,1共6中结果。

现在我们已经能够通过改变不同的还原距离translateY()从而达到滚动结果的不同,那还有一个问题,从上面6个数中随机出一个数来怎么做呢?滚动的结果在这里不应该是由我们人为控制的。小编想了一下,还好这里最起码的要求是结果应该是从-136的倍数0,1,2,3,4,5种随机出一个数来。我们通过倍数的变化就能获取到相应的随机值。

这里我利用了js种Math对象的Math.random()方法,Math.random()方法会返回介于 0(包含) ~ 1(不包含) 之间的一个随机数, 那如果我将Math.random的结果乘以6,那我不就得到0~6(不包含6)之间的一个随机数,并且我将获取的随机数通过Math.floor()做一个向下取整,那我不就得到0,1,2,3,4,5的随机数了。

目前整个游戏的开始方法整理如下:

注意点1:方法中resultNum为单个数字列表滚动结果的全部可能性。另外因为全部结果的情况总数由初始数字列表initImagesArr: [1,2,3,4,5,6]中的数字个数所决定的,所以只需要将initImagesArr.length作为参数传给start()方法即可。

注意点2:三个数字列表的随机结果都不同,其中radom1为列表1的随机结果,radom2为列表2的随机结果,radom3为列表3的随机结果。Math.random()*resultNum的值为 0 * resultNum ~ 1 * resultNum(不包含1 * resultNum)。本例中resultNum为6,则结果为0 ~ 5.999999999 经过Math.floor()向下取整过后的结果为0 ~ 5。

经过以上的处理之后,我们的随机结果就已经成功实现了。

前面可能会复杂一点,这里就我们聊个稍微简单易懂的东西。从效果图中我们可以看出老虎机从开始游戏到游戏快结束时一直是在抖动的,关于这个我也给大家稍微分享一下怎么实现的。

其实就一个东西,加个动画。这里我先直接贴上代码:

在写样式时小编通过相对定位的形式position:absoulte 配合{left:50%;top:50%;translate(-50%,-50%)}的形式实现老虎机相对可视区域水平垂直居中对齐的效果。

解释一下代码,小编通过给整个老虎机从各个方向都移动一下,并且以很快的速度完成(这里用的是0.1s完成的动画),动画的循环次数为无限次infinite,从而实现了老虎机一直在抖的效果。

不过要稍微留意一点,我们这里抖动应该也是要可控的,因为老虎机在游戏快结束时会停止抖动。跟我们之前做过渡效果可控的方式一样,我们也给动画声明一个添加抖动和移除抖动的方法:

之后我们在游戏开始的时候调用startShake(),然后在游戏快结束时调用stopShake()。不过在下面代码我们可以看到移除抖动效果是在2.6s之后才执行的,原因是第三个数字列表需要等到游戏开始1s才开始滚动,而且滚动的过渡时间为2s,那等到第三个数字列表滚动到结束总共需要3s,这里小编想要在第三个数字列表滚动结束之前将老虎机停止抖动,所以将移除抖动方法在游戏开始2.6s之后才执行。

老虎机从开始游戏到结束游戏的整个环节我们都已经实现完成了。但是呢,小编还想再玩一把,然后我在第二次点击开始手柄之前就想到了这个老虎机存在的缺陷,总结起来包括以下几点:

  • 游戏从开始到结束之后,再次点击开始手柄,应该将游戏进行重置

  • 重置游戏的过程中不应该出现过渡效果

  • 重置游戏的过程中机器不应该继续在摇晃

  • 如果将游戏进行重置了,第一次开始游戏方法中的定时器方法应该清空。

小编给这台老虎机做了个设定,当游戏手柄点击第一下时,游戏开始。当游戏手柄点击第二下时,游戏要结束并重置游戏。当游戏手柄点击第三下时,游戏又再度重新开始。

这里可能有个疑惑就是开始游戏手柄的点击事件只绑定了一个开始游戏start()的方法,那怎么判断游戏是开始还是重置?

这里小编给start写了个flag,这个当flag为true时,会执行开始游戏的方法,当flag为false时,会执行重置游戏的方法,每次点击时将flag的值重新赋为flag的反向值即可。

那重置游戏需要我们做什么呢?

1、首先当然是将所有的数字列表回到初始位置。我们在前面“数字列表滚动前的要点”中已经实现了初始化定位方法initPosition()方法,在上面else代码块中我们只要调用initPosition(startTranslateYHeight)即可将全部数字列表回到初始的位置。Tip:在前面“数字列表滚动前的要点”中我们已经介绍了startTranslateYHeight为列表向上移动的距离。

2、 重置游戏时数字列表在回到初始位置的过程中,由于游戏开始过程中数字列表添加了过渡动画,会导致数字列表在回到初始位置的过程也会存在过渡动画,因此我们需要调用之前先声明好的removeTranstion()来删除全部数字列表的过渡效果。

3、 重置游戏时由于第一次开始游戏过程中给老虎机添加了抖动效果,重置时应该移除抖动效果。在else代码块中调用stopShake()即可。

4、 假如在开始游戏后在很短的时间内又点击了重置游戏,这时候开始游戏中未执行的定时器中的方法应该通过clearTimeout()给予一一清除,否则在重置游戏时还是会执行开始游戏中的方法。

那么else代码块中的代码应该为:

是个游戏总会有个结果的。这里我们实现在老虎机游戏结束之后,将游戏结果给打印出来。由于我们的结果是通过radom1,radom2 老虎机网页版,radom3随机结果得出,当radom1为0时结果为6,random1为1时结果为5&#xff0c老虎机网页版;依次类推。我们可以得到最终的结果应该为 initImagesArr[radom1], initImagesArr[radom2], initImagesArr[radom3]。

前面我们也有提到游戏结束的整个过程需要经历3s,所以我们定义一个定时器在开始游戏3s后执行并打印出游戏结果即可。

html:

scss:

javaScript:

看到这里,小编想说读者你们也辛苦了,应该费了不少劲来看我的文章。虽然小编觉得这种需求在工作中几乎不会遇到,但是小编觉得这是一个锻炼自己思维能力的一个过程,如果读者们对代码有疑问或建议随时可以提出来,小编会耐心解答或虚心接受。如果喜欢文章的话也给小编点点赞支持一下,码字不易,很感谢你们的支持,最后祝大家工作顺利。

欢迎大家关注:前端技术编程

老虎机网页版

相关文章 :

  • 乐赢棋牌:乐赢棋牌游戏
澳门皇冠体彩

文章导航

Previous Post
Next Post
新会员注册就送$5美金

最新文章

  • 欢迎访问澳博集团官方网站,探索更多精彩内容!
  • 探秘澳门最牛的赌场:奢华体验与刺激游戏的完美结合
  • 白菜送彩金最新版本更新内容详解与使用指南
  • 探索pt电子游戏试玩的乐趣与技巧,带你畅游虚拟世界
  • 详细解析USDT购买教程:新手必看指南与注意事项

分类

  • 澳门皇冠体彩
  • 皇冠国际娱乐
  • 皇冠最新网站
  • 皇冠注册

相关文章 :

  • 乐赢棋牌:乐赢棋牌游戏
2025 年 10 月
一 二 三 四 五 六 日
 12345
6789101112
13141516171819
20212223242526
2728293031  
« 6 月    

澳门皇冠体彩 皇冠国际娱乐 皇冠最新网站 皇冠注册

澳门皇冠体彩 | 皇冠注册 | 皇冠最新网站 | 皇冠国际娱乐

欢迎来到:澳门皇冠体彩

澳门皇冠体彩是一家知名的在线娱乐平台,提供各种类型的线上游戏,如老虎机游戏、真人视讯等。其官方网站为https://amhg.org,同时还提供澳门皇冠体彩官网注册供玩家畅玩游戏。游戏平台注重用户体验和数据安全,提供专业的服务和优惠活动,备受玩家信赖和喜爱。

澳门皇冠体彩应用近期版本更新


2022年7月11日 版本5.3.3

1.澳门皇冠体彩移动项目组根据近期赛事类型,综合考虑玩家对不同赛事的参与热情,决定提升电子竞技类型赛事在界面中的显示顺序。

2022年6月28日 版本5.3.2

1.澳门皇冠体彩近期将针对新兴赛事投放部分定向奖励,以鼓励用户在传统赛事的夏季休赛期期间尝试参与一些更具有活力的体育项目。

2022年5月17日 版本5.3.1

1.澳门皇冠体彩体育应用内投放有关欧冠赛事的红利红包。
2.澳门皇冠体彩移动业务技术团队计划降低手机应用大版本更新频率,通过热更新的方式完成日常更新,提升用户体验。

2022年4月17日 版本5.3.0

1.完整修复澳门皇冠体彩手机应用内欧冠赛事板块的部分显示错误,并调整显示顺序。

2022年4月13日 版本5.2.9.2

1.修复澳门皇冠体彩手机应用内欧冠赛事板块的部分显示错误。
2.澳门皇冠体彩体育应用内进行"欧冠欧足联红包雨"活动,于4月12日至4月15日期间合计发放14波红包雨。

2022年3月15日 版本5.2.9

1.澳门皇冠体彩体育应用调整部分欧洲体育赛事板块顺序。
2.修复澳门皇冠体彩手机应用内部分屏幕显示适配错误。

2022年1月30日 版本5.2.7

1.金虎迎新春,澳门皇冠体彩上下全体员工祝各位用户2022壬寅年新春快乐。
2.澳门皇冠体彩体育推出多项春节活动。

2022年1月9日 版本5.2.6

1.澳门皇冠体彩体育应用内上线英雄联盟2022赛季LPL春季赛相关活动。
2.修复澳门皇冠体彩手机应用在夜间模式下的部分显示错误。

2021年12月24日 版本5.2.4

1.澳门皇冠体彩手机应用上线圣诞系列赛事活动。
2.更新部分线路,提升用户连接稳定性。

2021年12月1日 版本5.2.2

1.澳门皇冠体彩体育手机应用内根据五大足球联赛的相应热度进行页面排版布局的优化。

2021年10月28日 版本5.2.1

1.澳门皇冠体彩体育电竞板块迎接S11英雄联盟全球总决赛,上线部分红包活动。
2.在澳门皇冠体彩体育预测英雄联盟赛事胜负,获取额外奖励。

2021年9月28日 版本5.1.2

1.月迎中秋,喜迎国庆,澳门皇冠体彩手机应用内上线部分红包活动。
2.上调欧冠赛事在左侧选项卡中的显示顺序。

2021年9月10日 版本5.1.1

1.澳门皇冠体彩体育更新部分线路,提升用户连接稳定性。

2021年8月10日 版本4.7.3

1.东京奥运会圆满结束,庆祝中国体育健儿获得第二名的好成绩,澳门皇冠体彩投放最后一波奥运主题红包。

2021年7月28日 版本4.7.2

1.澳门皇冠体彩手机应用内根据东京奥运会的项目热门程度,对整体显示顺序进行调整。

2021年7月16日 版本4.7.1

1.澳门皇冠体彩体育上线"传递奥运圣火,助力东京奥运"活动。
2.更新部分线路,提升用户连接稳定性。

2021年7月11日 版本4.6.7

1.澳门皇冠体彩体育上线"冠军之路,闯关拿奖"活动,预祝欧洲杯圆满结束。
2.更新部分线路,提升用户连接稳定性。

2021年7月7日 版本4.6.6

1.澳门皇冠体彩体育提前上线"助威欧洲杯决赛,分享红包雨"活动,决赛对阵队伍出炉后开始推送。
2.更新部分线路,提升用户连接稳定性。

2021年7月4日 版本4.6.5

1.澳门皇冠体彩各线路运营趋向稳定,删除了部分备用线路,保留响应较快的线路以提升用户连接速度。
2.修复部分软件Bug。

2021年6月30日 版本4.6.4

1.由于近期银行整体风控水平加剧,为避免等待时间过长,澳门皇冠体彩普通提款通道提款金额范围由原来100-49000调整为5001-49000,5001以下金额提款可使用方便又快捷的【澳门皇冠体彩极速提款】通道进行提款。
2.增加部分线路,提升澳门皇冠体彩用户连接速度与稳定性。

2021年6月24日 版本4.6.3

1.更新并增添澳门皇冠体彩手机应用内部分用于解析的域名,提升用户使用稳定性。
2.在澳门皇冠体彩应用内增加转账异常自动处理入口,更好更快解决部分订单转账后入账慢的问题。
3.提升澳门皇冠体彩全渠道加密货币USDT存款充值奖励。泰达币(USDT)是基于美元(USD)的加密货币,用户可以随时使用USDT与USD进行1:1兑换,加密货币的低手续费、快转账速度特性比传统货币联网交易的模式有极大优势。

2021年6月18日 版本4.6.2

1.增加欧洲杯相关活动的红包和奖励通知。
2.澳门皇冠体彩全站及体育应用增加大量内嵌线路,力求为用户在欧洲杯期间提供稳定服务。
3.修复部分软件Bug。

2021年6月8日 版本4.6.1

1.迎接欧洲杯活动,澳门皇冠体彩体育增加大量内嵌线路。
2.伴随防火墙技术升级,近期澳门皇冠体彩将频繁出现域名更换现象,请及时关注最新更新信息。

2021年5月28日 版本4.5.9

1.伴随英雄联盟Msi季中赛结束,澳门皇冠体彩更改部分显示顺序和入口优先级,对部分Msi赛事玩家投放红包。
2.增加部分线路应对大规模DNS污染活动。

2021年5月6日 版本4.5.8

1.迎接英雄联盟Msi季中赛,澳门皇冠体彩更改部分显示顺序和入口优先级。

2021年4月30日 版本4.5.7

1.迎接五一,澳门皇冠体彩增加部分优惠信息。

2021年4月7日 版本4.5.6

1.增加部分线路,提升澳门皇冠体彩用户连接速度与稳定性。

2021年3月25日 版本4.5.5

1.庆祝澳门皇冠体彩与AC米兰达成赞助合作,为相关合作活动内容预留展示窗口。
2.修复部分软件Bug。

2021年3月7日 版本4.5.4

1.更新部分财务界面,提升用户存提款效率。
2.优化项目内容排版。

2021年2月20日 版本4.5.3

1.更新部分线路,提升用户连接稳定性。
2.优化界面前端排版。

2021年2月8日 版本4.5.2

1.庆祝农历新年,全站和体育应用内增加部分优惠及彩蛋内容。
2.修复部分软件Bug。

2021年1月7日 版本4.5.1

1.更新部分线路,提升用户连接稳定性。
Back to top
Proudly powered by K8 Gaming Group | Copyright © 2023 | 澳门皇冠体彩. 版权所有
澳门皇冠体彩 | 皇冠注册 | 皇冠最新网站 | 皇冠国际娱乐
  • 澳门皇冠体彩
  • 皇冠国际娱乐
  • 皇冠最新网站
  • 皇冠注册
Add your widget here
退出移动版