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的ajax jsonp的使用解惑
Oct 09 Javascript
实用的Jquery选项卡TAB示例代码
Aug 28 Javascript
9款2014最热门jQuery实用特效推荐
Dec 07 Javascript
深入理解JavaScript系列(41):设计模式之模板方法详解
Mar 04 Javascript
javascript跨域总结之window.name实现的跨域数据传输
Nov 01 Javascript
JavaScript正则表达式实例详解
Oct 16 Javascript
JS区分Object与Aarry的六种方法总结
Feb 27 Javascript
jQuery树插件zTree使用方法详解
May 02 jQuery
JS计算输出100元钱买100只鸡问题的解决方法
Jan 04 Javascript
通过webpack引入第三方库的方法
Jul 20 Javascript
vue输入节流,避免实时请求接口的实例代码
Oct 30 Javascript
Vue组件间的通信pubsub-js实现步骤解析
Mar 11 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
输出控制类
2006/10/09 PHP
深入理解PHP的远程多会话调试
2017/09/21 PHP
滚动经典最新话题[prototype框架]下编写
2006/10/03 Javascript
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
如何实现textarea里的不同文本显示不同颜色
2014/01/20 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
JS提交form表单实例分析
2015/12/10 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
2016/02/18 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
简单理解js的冒泡排序
2016/12/19 Javascript
JS验证不重复验证码
2017/02/10 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
jQuery.cookie.js使用方法及相关参数解释
2017/03/06 Javascript
JQuery查找子元素find()和遍历集合each的方法总结
2017/03/07 Javascript
浅谈原生JS中的延迟脚本和异步脚本
2017/07/12 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
p5.js入门教程之键盘交互
2018/03/19 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
[44:37]完美世界DOTA2联赛PWL S3 Forest vs access 第一场 12.11
2020/12/13 DOTA
python 列表转为字典的两个小方法(小结)
2019/06/28 Python
Python3内置模块random随机方法小结
2019/07/13 Python
python with (as)语句实例详解
2020/02/04 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
Groupon法国官方网站:特卖和网上购物高达-70%
2019/09/02 全球购物
高一家长会邀请函
2014/01/12 职场文书
逃出克隆岛观后感
2015/06/09 职场文书
小学主题班会教案
2015/08/17 职场文书
90条交通安全宣传标语
2019/10/12 职场文书
php去除数组中为0的元素的实例分析
2021/11/17 PHP