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 相关文章推荐
如何实现动态删除javascript函数
May 27 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
Apr 20 Javascript
11款新鲜的jQuery插件[附所有demo下载]
Jan 24 Javascript
JavaScript 判断日期格式是否正确的实现代码
Jul 04 Javascript
javascript时间自动刷新实现原理与步骤
Jan 06 Javascript
JavaScript中的pow()方法使用详解
Jun 15 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
Feb 14 Javascript
Bootstrap3下拉菜单的实现
Feb 22 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
Apr 10 Javascript
浅析Angular19 自定义表单控件
Jan 31 Javascript
详解jQuery中的isPlainObject()使用方法
Feb 27 jQuery
vue-cli 打包使用history模式的后端配置实例
Sep 20 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之第五天
2006/10/09 PHP
php使用GeoIP库实例
2014/06/27 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
php的常量和变量实例详解
2017/06/27 PHP
PHP Web表单生成器案例分析
2020/06/02 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
flexigrid 参数说明
2010/11/23 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
Javascript学习指南
2014/12/01 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
js控制多图左右滚动切换效果代码分享
2015/08/26 Javascript
基于JavaScript实现生成名片、链接等二维码
2015/09/20 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
javascript事件处理模型实例说明
2016/05/31 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
vuex2中使用mapGetters/mapActions报错的解决方法
2018/10/20 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
Python 条件判断的缩写方法
2008/09/06 Python
Python的装饰器使用详解
2017/06/26 Python
wxpython实现图书管理系统
2018/03/12 Python
详解Django之auth模块(用户认证)
2018/04/17 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
python获取引用对象的个数方式
2019/12/20 Python
Java里面有没有全局变量?为什么?
2015/02/06 面试题
职业女性的职业规划
2014/03/04 职场文书
合伙购房协议样本
2014/10/06 职场文书
2014年德育工作总结
2014/11/20 职场文书
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android