js实现大转盘抽奖游戏实例


Posted in Javascript onJune 24, 2015

本文实例讲述了js实现大转盘抽奖游戏。分享给大家供大家参考。具体实现方法如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <title>js抽奖</title>
 <style type="text/css">
  td{width:50px;height:50px;border:3px solid #ccc;text-align:center;vertical-align:middle}
 </style>
</head>
<body>
<table id="tb">
<tr>
 <td>1</td><td>2</td><td>3</td><td>4</td><td>5</td>
</tr>
<tr>
 <td>16</td><td></td><td></td><td></td><td>6</td>
</tr>
<tr>
 <td>15</td><td></td><td></td><td></td><td>7</td>
</tr>
<tr>
 <td>14</td><td></td><td></td><td></td><td>8</td>
</tr>
<tr>
 <td>13</td><td>12</td><td>11</td><td>10</td><td>9</td>
</tr>
</table>
<p></p>
请输入1-16其中一位整数,代表要停止的位置<input id="txtnum" value="12" type="text" /><input type="button" value="开始" onclick="StartGame()" />
 <script type="text/javascript">
  /*
  * 删除左右两端的空格
  */
  function Trim(str){
   return str.replace(/(^\s*)|(\s*$)/g, ""); 
  }
  /*
   * 定义数组
   */
  function GetSide(m,n){
   //初始化数组
   var arr = [];
   for(var i=0;i<m;i++){
    arr.push([]);
    for(var j=0;j<n;j++){
     arr[i][j]=i*n+j;
    }
   }
   //获取数组最外圈
   var resultArr=[];
   var tempX=0,
    tempY=0,
    direction="Along",
    count=0;
   while(tempX>=0 && tempX<n && tempY>=0 && tempY<m && count<m*n)
   {
    count++;
    resultArr.push([tempY,tempX]);
    if(direction=="Along"){
     if(tempX==n-1)
      tempY++;
     else
      tempX++;
     if(tempX==n-1&&tempY==m-1)
      direction="Inverse"
    }
    else{
     if(tempX==0)
      tempY--;
     else
      tempX--;
     if(tempX==0&&tempY==0)
      break;
    }
   }
   return resultArr;
  }
  var index=0,   //当前亮区位置
  prevIndex=0,   //前一位置
  Speed=300,   //初始速度
  Time,   //定义对象
  arr = GetSide(5,5),   //初始化数组
   EndIndex=0,   //决定在哪一格变慢
   tb = document.getElementById("tb"),  //获取tb对象 
   cycle=0,   //转动圈数 
   EndCycle=0,   //计算圈数
  flag=false,   //结束转动标志 
  quick=0;   //加速
  function StartGame(){
   cycle=0;
   flag=false;
   EndIndex=Math.floor(Math.random()*16);
   //EndCycle=Math.floor(Math.random()*4);
  EndCycle=1;
   Time = setInterval(Star,Speed);
  }
  function Star(num){
   //跑马灯变速
   if(flag==false){
    //走五格开始加速
    if(quick==5){
     clearInterval(Time);
     Speed=50;
     Time=setInterval(Star,Speed);
    }
    //跑N圈减速
    if(cycle==EndCycle+1 && index==EndIndex){
    clearInterval(Time);
     Speed=300;
     flag=true;   //触发结束
     Time=setInterval(Star,Speed);
    }
   }
   if(index>=arr.length){
    index=0;
    cycle++;
   }
   //结束转动并选中号码
   if(flag==true && index==parseInt(Trim(document.getElementById("txtnum").value))-1){ 
   quick=0;
   clearInterval(Time);
   }
   tb.rows[arr[index][0]].cells[arr[index][1]].style.border="3px solid red";
   if(index>0)
    prevIndex=index-1;
   else{
    prevIndex=arr.length-1;
   }
   tb.rows[arr[prevIndex][0]].cells[arr[prevIndex][1]].style.border="3px solid #ccc";
   index++;
   quick++;
  }
  /*
  window.onload=function(){
   Time = setInterval(Star,Speed);
  }
  */
 </script>
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
jQuery获取浏览器中的分辨率实现代码
Apr 23 Javascript
固定表格行列(expression)在IE下适用
Jul 25 Javascript
屏蔽相应键盘按钮操作
Mar 10 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
Oct 20 Javascript
js实现遮罩层弹出框的方法
Jan 15 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
Apr 27 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
Oct 18 Javascript
vue mint-ui tabbar变组件使用
May 04 Javascript
js/jquery遍历对象和数组的方法分析【forEach,map与each方法】
Feb 27 jQuery
Node.js中console.log()输出彩色字体的方法示例
Dec 01 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
vue实现登录、注册、退出、跳转等功能
Dec 23 Vue.js
jQuery里filter()函数与find()函数用法分析
Jun 24 #Javascript
举例详解Python中smtplib模块处理电子邮件的使用
Jun 24 #Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
Jun 24 #Javascript
介绍一个简单的JavaScript类框架
Jun 24 #Javascript
jquery分割字符串的方法
Jun 24 #Javascript
jQuery根据元素值删除数组元素的方法
Jun 24 #Javascript
举例详解JavaScript中Promise的使用
Jun 24 #Javascript
You might like
SSI指令
2006/11/25 PHP
php 带逗号千位符数字的处理方法
2012/01/10 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
javascript动画效果类封装代码
2007/08/28 Javascript
基于jQuery的可以控制左右滚动及自动滚动效果的代码
2010/07/25 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
使用JS读秒使用示例
2013/09/21 Javascript
js将字符串转成正则表达式的实现方法
2013/11/13 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
jQuery源码解读之removeAttr()方法分析
2015/02/20 Javascript
JavaScript之数组(Array)详解
2015/04/01 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
2019/07/29 Javascript
Layui选项卡制作历史浏览记录的方法
2019/09/28 Javascript
vue resource发送请求的几种方式
2019/09/30 Javascript
Vue中登录验证成功后保存token,并每次请求携带并验证token操作
2020/09/08 Javascript
解决Vue-cli3没有vue.config.js文件夹及配置vue项目域名的问题
2020/12/04 Vue.js
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[06:59]DOTA2-DPC中国联赛3月7日Recap集锦
2021/03/11 DOTA
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python 调用钉钉机器人的方法
2019/02/20 Python
python yield关键词案例测试
2019/10/15 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
Pytest参数化parametrize使用代码实例
2020/02/22 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
机电专业大学生求职信
2013/10/04 职场文书
竞选大队委员演讲稿
2014/04/28 职场文书
教师节感恩老师演讲稿
2014/08/28 职场文书
2015大学迎新标语
2015/07/16 职场文书
win11自动弹出虚拟键盘怎么关闭? Win11关闭虚拟键盘的技巧
2023/01/09 数码科技