iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么用Javascript实现一个转盘小游戏
  • 454
分享到

怎么用Javascript实现一个转盘小游戏

2024-04-02 19:04:59 454人浏览 安东尼
摘要

本篇内容主要讲解“怎么用javascript实现一个转盘小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Javascript实现一个转盘小游戏”吧!前

本篇内容主要讲解“怎么用javascript实现一个转盘小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Javascript实现一个转盘小游戏”吧!

前言

本文技术路线采用和上篇文章教你用200行代码写一个爱豆拼拼乐H5小游戏(附源码)同样的技术,即均使用本人自己写的dom库去简化dom操作,具体需要掌握的知识点有:

  • css3 背景渐变,transfORM,transition

  • less循环的使用

  • javascript基本随机算法

  • 文档片段 documentFragment的使用

由于文章没有太高深的技术,关键是思路,所以接下来开始我们的实现介绍。

效果图

怎么用Javascript实现一个转盘小游戏

实现思路

实现思路分两部分,第一部分是用CSS绘制转盘背景,第二部分是通过js实现转盘的转动以及转动随机性的实现。

1. 绘制转盘背景

我们采用背景渐变的方式去实现条纹交替的扇形,原理就是通过绘制一个半圆,并在半圆里加渐变来实现,如下图:

怎么用Javascript实现一个转盘小游戏

实现将方形变成半圆的css我们通过border-radius来实现:

width: 150px;    height: 300px;    border-radius: 0 150px 150px 0;

我们再通过css的线性渐变,这样本基本上可以实现一个小的扇形区域:

怎么用Javascript实现一个转盘小游戏

我们再通过css的线性渐变,这样本基本上可以实现一个小的扇形区域:

渐变的代码如下:

background-image: linear-gradient(120deg, #f6d365, #f6d365 75px, transparent 75px);

实现了一个扇形,我们自然可以通过计算,比如我们扇形弧度为30deg,那么我们需要12个扇形即可组成一个圆,为了方便,我们使用less的循环来实现:

.loop(@n) when (@n >= 0) {     .loop(@n - 1);     .piece-@{n} {         transform: rotate(-30deg * (@n + 1));     }  }

还有一个细节是,我们需要改变变换的中心点,让每个扇形都以一个中心点渲染,这样才可以组成一个完整的圆:

transform-origin: left center;

完整的css大致如下:

.piece-wrap {     position: relative;     width: 300px;     height: 300px;     margin: 100px auto  auto 173px;     transform-origin: left center;     transition: transform 16s cubic-bezier(0,.47,.31,1.03);     .piece {         position: absolute;         left: 0;         top: 0;         width: 150px;         height: 300px;         border-radius: 0 150px 150px 0;         transform-origin: left center;         span {             margin-left: 16px;             margin-top: 20px;             display: inline-block;             color: #fff;         }         &:nth-child(2n) {             background-image: linear-gradient(120deg, #f6d365, #f6d365 75px, transparent 75px);         }         &:nth-child(2n+1) {             background-image: linear-gradient(120deg, #ff5858, #ff5858 75px, transparent 75px);         }     }      .loop(@n) when (@n >= 0) {         .loop(@n - 1);         .piece-@{n} {             transform: rotate(-30deg * (@n + 1));         }      }      .loop(11); }

2.javascript实现转盘逻辑

由于转盘的转动是随机的,所以我们需要每次点击开始按钮都要随机生成一个角度,但是仔细分析一些平台会发现转盘每次都至少转动n圈后才会慢慢开始停下,所以我们会给转盘一个初始的角度,比如720deg,1080deg,这样能保证转盘至少转动n圈才停下来。另一个注意点是我们要如何通过转动角度知道转盘停下来后的位置?这里处于性能问题,我们尽量不操作dom,通过数据控制,我们可以通过每次随机后得到的角度和单位扇形区域的弧度来计算停下来的位置,公式如下:totalRadis  = initRadis + radis * n +  radis/2totalRadis为转动的角度,initRadis为初始化角度,radis为扇形的角度,radis/2是中奖的范围,这里主要用来定位用的,n是随机数,接下来我将解释n的作用。那么怎么实现随机角度呢?我们一般会想通过写个随机函数去做,不过这里有一种新的思路,就是通过随机生成中奖的位置来实现随机角度,由于我的扇形为30度,一共有12个扇形奖品区,所以索引为0-11。因此,上面讲到的n,就是我们的随机索引,我们只需要写个生成指定范围的随机数就可以了。了解了以上知识,我们开始准备初始化数据:

// 转盘抽奖数据     var wards = ['1元', '2元', '3元', '5元', '再来',       '算法', '0.5元', '0.1元', '0.2元', '0.6元',      '0.5元', '来'];

渲染奖品数据,这里我们用了DocumentFragment,虽然对简单渲染没有必要,但是后期可能会很有用:

// 渲染dom var fragment = document.createDocumentFragment(); for(var i=0, len = wards.length; i < len; i++) {     var piece = document.createElement('div');     piece.className = 'piece piece-' + i;     piece.innerhtml = '<span>' + wards[i] + '</span>';     fragment.appendChild(piece); }  $('#piece_wrap')[0].appendChild(fragment);

生成指定范围的随机数的方法:

// 生成从 start到end的随机数 function randomArr(start, end) {     return Math.round(start + Math.random()* (end - start)) }

当我们点击开始按钮时,我将通过改变转盘的transform来让其运动起来:

// 转动逻辑     var radis = 30,  // 每个扇形区域的度数             n = randomArr(0, 360/radis),  // 计算随机中奖的位置     initRadis = 720,   // 初始转动的角度          time = 16 * 1000,    // 转动时间           once = true,    // 限制一个转动周期只能点击一次    totalRadis = initRadis + radis * n + radis/2;  // 转动角度计算公式 $('.start').on('click', function(){     if(once) {         once = false;         $('#piece_wrap').css({             'transform':'rotate(' + totalRadis + 'deg)',             'transition': 'transform 16s cubic-bezier(0,.47,.31,1.03)'         });         setTimeout(function(){             once = true;             alert('恭喜你抽中了' + wards[n] + '!');             $('#piece_wrap').css({                 'transform':'rotate(' + 0 + 'deg)',                 'transition': 'none'             });         }, time)     }              })

到此,相信大家对“怎么用Javascript实现一个转盘小游戏”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 怎么用Javascript实现一个转盘小游戏

本文链接: https://www.lsjlt.com/news/73987.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么用Javascript实现一个转盘小游戏
    本篇内容主要讲解“怎么用Javascript实现一个转盘小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Javascript实现一个转盘小游戏”吧!前...
    99+
    2022-10-19
  • 如何使用Javascript和CSS3实现一个转盘小游戏
    这篇文章主要介绍了如何使用Javascript和CSS3实现一个转盘小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体需要掌握的知识点...
    99+
    2022-10-19
  • 怎么在微信小程序实现一个幸运转盘小游戏
    这篇文章将为大家详细讲解有关怎么在微信小程序实现一个幸运转盘小游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图小程序开发思路开发思路有三部分,第一部分是用css绘制转盘背景,第二部分是利用 wxs...
    99+
    2023-06-14
  • 如何在微信小程序实现一个幸运转盘小游戏
    本人主要介绍如何在微信小程序里面开发一个幸运转盘的小游戏,里面主要用到javascript和 css 语法,就可以轻松实现一个简单的幸运转盘(以6个奖品区为例)。 前言 本次教程需...
    99+
    2022-11-12
  • 利用JavaScript怎么实现一个H5接金币小游戏
    这篇文章主要为大家详细介绍了利用JavaScript怎么实现一个H5接金币小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行...
    99+
    2023-06-06
  • 怎么用JavaScript写一个卡片小游戏
    这篇文章主要介绍“怎么用JavaScript写一个卡片小游戏”,在日常操作中,相信很多人在怎么用JavaScript写一个卡片小游戏问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解...
    99+
    2022-10-19
  • 教你用Python实现一个轮盘抽奖小游戏
    目录一、Python GUI 编程简介二、流行GUI框架总结三、代码演示四、界面一、Python GUI 编程简介 Tkinter 模块(Tk 接口)是 Python 的标准 Tk ...
    99+
    2022-11-12
  • Python中怎么实现一个猜数小游戏
    Python中怎么实现一个猜数小游戏,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现效果: 程序截图:点击(此处)折叠或打开from random i...
    99+
    2023-06-04
  • 使用Java怎么实现一个贪吃蛇小游戏
    这篇文章将为大家详细讲解有关使用Java怎么实现一个贪吃蛇小游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 程序结构  程序结构图如图:2. 程序设计思路2.1 Data类作用:连接st...
    99+
    2023-06-14
  • python实现一个围棋小游戏
    一道Python课作业题,大致如下: 编写一个类: 该类Building应具有以下方法: ●一个构造函数,它根本不接受任何参数(除了通常的`self`) ●setHeightRand...
    99+
    2022-11-13
    python围棋程序 python围棋算法
  • 使用JavaScript编写一个2048小游戏
    今天就跟大家聊聊有关使用JavaScript编写一个2048小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点...
    99+
    2023-06-07
  • 一文教你用JavaScript制作个简单的大转盘游戏
    目录背景一、开始前的准备二、画出大转盘三、把奖励放上去四、让大转盘滚起来个人总结背景 日常生活中,我们经常会见到形形色色的抽奖活动,例如九宫格、大转盘等等…&helli...
    99+
    2023-02-01
    JavaScript实现大转盘游戏 JavaScript大转盘游戏 JavaScript转盘
  • Shell中怎么实现一个猜数字小游戏
    Shell中怎么实现一个猜数字小游戏,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。生成的密码和用户输入可以接受重复数字。所以相对一般规则的猜数字可能难度要大不少。本版本规则:A...
    99+
    2023-06-09
  • 怎么用JavaScript写一个小乌龟推箱子游戏
    本篇内容介绍了“怎么用JavaScript写一个小乌龟推箱子游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2022-10-19
  • 使用C/C++怎么实现一个推箱子小游戏
    这篇文章给大家介绍使用C/C++怎么实现一个推箱子小游戏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。如何实现首先思考要保存箱子,小猪等信息,添加多个map可以用到三维数组。2.定义小猪,箱子,墙,空地等信息在三维数组...
    99+
    2023-06-15
  • 使用C语言怎么实现一个猜拳小游戏
    本篇文章给大家分享的是有关使用C语言怎么实现一个猜拳小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体内容如下#include<stdio.h>#includ...
    99+
    2023-06-06
  • python实现一个摇骰子小游戏
    目录一、程序实现二、程序优化总结一、程序实现 分析问题:骰子比大小是我们经常玩的一个小游戏也十分的简单,就是不同玩家骰子点数比较大小。 编写程序: #骰子比大小 import ran...
    99+
    2022-11-13
  • 用C语言实现一个扫雷小游戏
    本文实例为大家分享了C语言实现一个扫雷小游戏的具体代码,供大家参考,具体内容如下 一、全部源码 //棋盘大小 #define ROW 9 #define COL 9 //棋盘加边...
    99+
    2022-11-12
  • Vue+TailWindcss怎么实现一个简单的闯关小游戏
    今天小编给大家分享一下Vue+TailWindcss怎么实现一个简单的闯关小游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2023-06-29
  • 怎么利用Three.js实现跳一跳小游戏
    本篇内容介绍了“怎么利用Three.js实现跳一跳小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!游戏规则十分简单:长按鼠标蓄力、放手,...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作