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 相关文章推荐
aspx中利用js实现确认删除代码
Jul 22 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
Jul 16 Javascript
网站内容禁止复制和粘贴、另存为的js代码
Feb 26 Javascript
详解JavaScript中的forEach()方法的使用
Jun 08 Javascript
jquery中ajax处理跨域的三大方式
Jan 05 Javascript
浅析jquery如何判断滚动条滚到页面底部并执行事件
Apr 29 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
标准的js无缝滚动效果
Aug 30 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
Jul 24 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
Apr 11 Javascript
Smartour 让网页导览变得更简单(推荐)
Jul 19 Javascript
js实现中文实时时钟
Jan 15 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的简单采集数据入库程序【续篇】
2014/07/30 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
laravel 模型查询按照whereIn排序的示例
2019/10/16 PHP
简单JS代码压缩器
2006/10/12 Javascript
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
javascript:history.go()和History.back()的区别及应用
2012/11/25 Javascript
通过jQuery源码学习javascript(二)
2012/12/27 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
css与javascript跨浏览器兼容性总结
2014/09/15 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
iScroll.js 使用方法参考
2016/05/16 Javascript
jQuery Easyui使用(二)之可折叠面板动态加载无效果的解决方法
2016/08/17 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
AngularJS获取json数据的方法详解
2017/05/27 Javascript
webpack打包nodejs项目的方法
2018/09/26 NodeJs
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
Vue-CLI 项目在pycharm中配置方法
2019/08/30 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
vue-cli 为项目设置别名的方法
2019/10/15 Javascript
JS实现简易留言板增删功能
2020/02/08 Javascript
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
python通过wxPython打开一个音频文件并播放的方法
2015/03/25 Python
Python实现Windows和Linux之间互相传输文件(文件夹)的方法
2017/05/08 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python中hasattr()、getattr()、setattr()函数的使用
2019/08/16 Python
Python+numpy实现矩阵的行列扩展方式
2019/11/29 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
2020/02/10 Python
八一建军节部队活动方案
2014/02/04 职场文书
消防宣传口号
2014/06/16 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
2015年社区重阳节活动总结
2015/07/30 职场文书
新年祝酒词大全
2015/08/11 职场文书
感恩父母主题班会
2015/08/12 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python
postgresql之greenplum字符串去重拼接方式
2023/05/08 PostgreSQL