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 相关文章推荐
js 效率组装字符串 StringBuffer
Dec 23 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
Aug 14 Javascript
原生js写的放大镜效果
Aug 22 Javascript
使用jquery中height()方法获取各种高度大全
Apr 02 Javascript
jQuery实现时尚漂亮的弹出式对话框实例
Aug 07 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
js将字符串中的每一个单词的首字母变为大写其余均为小写
Jan 05 Javascript
JavaScript实现隐藏省略文字效果的方法
Apr 27 Javascript
react-router JS 控制路由跳转实例
Jun 15 Javascript
Vue父组件如何获取子组件中的变量
Jul 24 Javascript
在react项目中使用antd的form组件,动态设置input框的值
Oct 24 Javascript
JavaScript原型链中函数和对象的理解
Jun 16 Javascript
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
php接口技术实例详解
2016/12/07 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
Laravel框架创建路由的方法详解
2019/09/04 PHP
Cookie跨域问题解决方案代码示例
2020/11/24 PHP
jQuery 树形结构的选择器
2010/02/15 Javascript
鼠标焦点离开文本框时验证的js代码
2013/07/19 Javascript
JavaScript 函数惰性载入的实现及其优点介绍
2013/08/12 Javascript
对于this和$(this)的个人理解
2013/09/08 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
jquery.ui.draggable中文文档(原文翻译)
2013/11/15 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
详解用webpack2.0构建vue2.0超详细精简版
2017/04/05 Javascript
记一次webpack3升级webpack4的踩坑经历
2018/06/12 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
Python用模块pytz来转换时区
2016/08/19 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
Python如何实现感知器的逻辑电路
2020/12/25 Python
python+selenium+chrome实现淘宝购物车秒杀自动结算
2021/01/07 Python
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
数据库的约束含义
2012/09/09 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
个人自我评价分享
2013/12/20 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
土地转让协议书
2014/09/27 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
离婚上诉状范文
2015/05/23 职场文书
离婚被告代理词
2015/05/23 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android