返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何使用Javascript和CSS3实现一个转盘小游戏
  • 246
分享到

如何使用Javascript和CSS3实现一个转盘小游戏

2024-04-02 19:04:59 246人浏览 独家记忆
摘要

这篇文章主要介绍了如何使用javascript和css3实现一个转盘小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体需要掌握的知识点

这篇文章主要介绍了如何使用javascriptcss3实现一个转盘小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体需要掌握的知识点有:

  • CSS3 背景渐变,transfORM,transition

  • less循环的使用

  • javascript基本随机算法

  • 文档片段 documentFragment的使用

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

效果图

如何使用Javascript和CSS3实现一个转盘小游戏

实现思路

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

1. 绘制转盘背景

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

如何使用Javascript和CSS3实现一个转盘小游戏

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

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

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

如何使用Javascript和CSS3实现一个转盘小游戏

渐变的代码如下:

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和CSS3实现一个转盘小游戏”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网JavaScript频道,更多相关知识等着你来学习!

--结束END--

本文标题: 如何使用Javascript和CSS3实现一个转盘小游戏

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

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

猜你喜欢
  • 如何使用Javascript和CSS3实现一个转盘小游戏
    这篇文章主要介绍了如何使用Javascript和CSS3实现一个转盘小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体需要掌握的知识点...
    99+
    2024-04-02
  • 怎么用Javascript实现一个转盘小游戏
    本篇内容主要讲解“怎么用Javascript实现一个转盘小游戏”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Javascript实现一个转盘小游戏”吧!前...
    99+
    2024-04-02
  • 如何在微信小程序实现一个幸运转盘小游戏
    本人主要介绍如何在微信小程序里面开发一个幸运转盘的小游戏,里面主要用到javascript和 css 语法,就可以轻松实现一个简单的幸运转盘(以6个奖品区为例)。 前言 本次教程需...
    99+
    2024-04-02
  • 使用JavaScript编写一个2048小游戏
    今天就跟大家聊聊有关使用JavaScript编写一个2048小游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。JavaScript可以做什么1.可以使网页具有交互性,例如响应用户点...
    99+
    2023-06-07
  • 怎么在微信小程序实现一个幸运转盘小游戏
    这篇文章将为大家详细讲解有关怎么在微信小程序实现一个幸运转盘小游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。效果图小程序开发思路开发思路有三部分,第一部分是用css绘制转盘背景,第二部分是利用 wxs...
    99+
    2023-06-14
  • 如何使用JavaScript实现贪吃蛇小游戏
    这篇文章将为大家详细讲解有关如何使用JavaScript实现贪吃蛇小游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JavaScript实现贪吃蛇小游戏功能概述本程序实...
    99+
    2024-04-02
  • 如何用JavaScript制作大转盘游戏
    今天小编给大家分享一下如何用JavaScript制作大转盘游戏的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、开始前的准备...
    99+
    2023-07-05
  • 教你用Python实现一个轮盘抽奖小游戏
    目录一、Python GUI 编程简介二、流行GUI框架总结三、代码演示四、界面一、Python GUI 编程简介 Tkinter 模块(Tk 接口)是 Python 的标准 Tk ...
    99+
    2024-04-02
  • python如何实现一个摇骰子小游戏
    这篇文章将为大家详细讲解有关python如何实现一个摇骰子小游戏,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、程序实现分析问题:骰子比大小是我们经常玩的一个小游戏也十分的简单,就是不同玩家骰子点数比较...
    99+
    2023-06-28
  • 利用JavaScript怎么实现一个H5接金币小游戏
    这篇文章主要为大家详细介绍了利用JavaScript怎么实现一个H5接金币小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,发现的小伙伴们可以参考一下:JavaScript的特点1.JavaScript主要用来向HTML页面添加交互行...
    99+
    2023-06-06
  • 使用QT如何实现一个五子棋游戏
    今天就跟大家聊聊有关使用QT如何实现一个五子棋游戏,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。FIR.pro QT    &nbs...
    99+
    2023-06-15
  • 一文教你用JavaScript制作个简单的大转盘游戏
    目录背景一、开始前的准备二、画出大转盘三、把奖励放上去四、让大转盘滚起来个人总结背景 日常生活中,我们经常会见到形形色色的抽奖活动,例如九宫格、大转盘等等…&helli...
    99+
    2023-02-01
    JavaScript实现大转盘游戏 JavaScript大转盘游戏 JavaScript转盘
  • 如何用JavaScript模拟实现打字小游戏
    这篇“如何用JavaScript模拟实现打字小游戏”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2024-04-02
  • 使用Java怎么实现一个贪吃蛇小游戏
    这篇文章将为大家详细讲解有关使用Java怎么实现一个贪吃蛇小游戏,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 程序结构  程序结构图如图:2. 程序设计思路2.1 Data类作用:连接st...
    99+
    2023-06-14
  • 如何使用python做一个罚点球小游戏
    本篇内容介绍了“如何使用python做一个罚点球小游戏”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在学习了一点 Python 基础之后,我...
    99+
    2023-06-30
  • 如何利用Three.js实现跳一跳小游戏
    目录前言游戏规则Three.js整个程序的结构实现html文件引入three.js引擎页面结构场景相机几何体光源渲染添加第二块跳块鼠标按下状态鼠标松开弹起状态落在哪里结尾前言 跳一跳...
    99+
    2024-04-02
  • 如何使用Java实现扫雷小游戏
    这篇文章主要介绍“如何使用Java实现扫雷小游戏”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“如何使用Java实现扫雷小游戏”文章能帮助大家解决问题。效果展示主类:GameWin类package&n...
    99+
    2023-06-30
  • 用C语言实现一个扫雷小游戏
    本文实例为大家分享了C语言实现一个扫雷小游戏的具体代码,供大家参考,具体内容如下 一、全部源码 //棋盘大小 #define ROW 9 #define COL 9 //棋盘加边...
    99+
    2024-04-02
  • 如何使用java实现马踏棋盘游戏
    小编给大家分享一下如何使用java实现马踏棋盘游戏,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下在4399小游戏中有这样一个游戏这是代码实现packa...
    99+
    2023-06-29
  • 使用C语言怎么实现一个猜拳小游戏
    本篇文章给大家分享的是有关使用C语言怎么实现一个猜拳小游戏,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体内容如下#include<stdio.h>#includ...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作