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 ajaxsubmit上传图片实现代码
Nov 04 Javascript
jQuery如何获取同一个类标签的所有值(默认无法获取)
Sep 25 Javascript
JavaScript进阶练习及简单实例分析
Jun 03 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
Oct 28 Javascript
JavaScript中的编码和解码函数
Feb 15 Javascript
Vue之Watcher源码解析(2)
Jul 19 Javascript
jQuery中ajax获取数据赋值给页面的实例
Dec 31 jQuery
React事件处理的机制及原理
Dec 03 Javascript
通过layer实现可输入的模态框的例子
Sep 27 Javascript
node使用request请求的方法
Dec 20 Javascript
JavaScript canvas绘制圆弧与圆形
Feb 18 Javascript
vue实现员工信息录入功能
Jun 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
php反射类ReflectionClass用法分析
2016/05/12 PHP
php7性能提升的原因详解
2019/10/13 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
webuploader模态框ueditor显示问题解决方法
2016/12/27 Javascript
NodeJS实现客户端js加密
2017/01/09 NodeJs
微信小程序 合法域名校验出错详解及解决办法
2017/03/09 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
AngularJS实现的鼠标拖动画矩形框示例【可兼容IE8】
2019/05/17 Javascript
解决vue更新路由router-view复用组件内容不刷新的问题
2019/11/04 Javascript
mpvue微信小程序开发之实现一个弹幕评论
2019/11/24 Javascript
简单了解JavaScript作用域
2020/07/31 Javascript
[02:35]DOTA2超级联赛专访XB 难忘一年九冠称王
2013/06/20 DOTA
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
rhythmbox中文名乱码问题解决方法
2008/09/06 Python
详细解析Python中__init__()方法的高级应用
2015/05/11 Python
浅谈flask源码之请求过程
2018/07/26 Python
OpenCV+python手势识别框架和实例讲解
2018/08/03 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
python pandas写入excel文件的方法示例
2019/06/25 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
Django 解决新建表删除后无法重新创建等问题
2020/05/21 Python
基于OpenCV的路面质量检测的实现
2020/11/04 Python
详解Python openpyxl库的基本应用
2021/02/26 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
俄罗斯首家面向中国消费者的一站式购物网站:Wruru
2020/05/08 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
应届毕业生的自我鉴定
2013/11/13 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
MySQL sql_mode修改不生效的原因及解决
2021/05/07 MySQL
前端框架ECharts dataset对数据可视化的高级管理
2022/12/24 Javascript