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下拉选择框
Nov 20 Javascript
javascript的document.referrer浏览器支持、失效情况总结
Jul 18 Javascript
javascript检测两个数组是否相似
May 19 Javascript
js实现图片轮播效果
Dec 19 Javascript
js的各种排序算法实现(总结)
Jul 23 Javascript
从零学习node.js之express入门(六)
Feb 25 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
Oct 27 Javascript
ES6的解构赋值实例详解
May 06 Javascript
关于layui 弹出层一闪而过就消失的解决方法
Sep 09 Javascript
javascript 内存模型实例详解
Apr 18 Javascript
详细分析vue响应式原理
Jun 22 Javascript
浅析vue中的nextTick
Dec 28 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
PHP chmod 函数与批量修改文件目录权限
2010/05/10 PHP
PHP中SESSION的注销与清除
2015/04/16 PHP
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
EASYUI TREEGRID异步加载数据实现方法
2012/08/22 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
怎么通过onclick事件获取js函数返回值(代码少)
2015/07/28 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
JS实现合并两个数组并去除重复项只留一个的方法
2015/12/17 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
jQuery与JS加载事件用法分析
2016/09/04 Javascript
jquery把int类型转换成字符串类型的方法
2016/10/07 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
微信小程序内拖动图片实现移动、放大、旋转的方法
2018/09/04 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
Vue3 实现双盒子定位Overlay的示例
2020/12/22 Vue.js
Python去除列表中重复元素的方法
2015/03/20 Python
Python中关键字nonlocal和global的声明与解析
2017/03/12 Python
浅谈python中拼接路径os.path.join斜杠的问题
2018/10/23 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Pycharm连接远程服务器并实现远程调试的实现
2019/08/02 Python
python Kmeans算法原理深入解析
2019/08/23 Python
对python中各个response的使用说明
2020/03/28 Python
Python键鼠操作自动化库PyAutoGUI简介(小结)
2020/05/17 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
Servlet如何得到客户端机器的信息
2014/10/17 面试题
物业总经理助理岗位职责
2014/06/29 职场文书
十八大宣传标语
2014/10/09 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
会计岗位职责
2015/02/03 职场文书
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers
Spring 使用注解开发
2022/05/20 Java/Android