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 相关文章推荐
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
Apr 01 Javascript
JQuery伸缩导航练习示例
Nov 13 Javascript
Window.Open如何在同一个标签页打开
Jun 20 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
Dec 06 Javascript
js中el表达式的使用和非空判断方法
Mar 28 Javascript
用npm-run实现自动化任务的方法示例
Jan 14 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
Jun 22 Javascript
js实现踩五彩块游戏
Feb 08 Javascript
vue cli3.0打包上线静态资源找不到路径的解决操作
Aug 03 Javascript
vue实现登录功能
Dec 31 Vue.js
Vue使用Ref跨层级获取组件的步骤
Jan 25 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产生动态的影像图
2006/10/09 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
php生成N个不重复的随机数实例
2013/11/12 PHP
php使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
laravel框架 api自定义全局异常处理方法
2019/10/11 PHP
通过身份证号得到出生日期和性别的js代码
2009/11/23 Javascript
javascript 面向对象的JavaScript类
2010/05/04 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
关于JS中的闭包浅谈
2013/08/23 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
Javascript 5种方法实现过滤删除前后所有空格
2016/06/22 Javascript
Vue.js一个文件对应一个组件实践
2016/10/27 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
jQuery中ztree 点击文本框弹出下拉框的实例代码
2017/02/05 Javascript
轻松搞定jQuery+JSONP跨域请求的解决方案
2018/03/06 jQuery
angular4自定义表单控件[(ngModel)]的实现
2018/11/23 Javascript
Python的ORM框架中SQLAlchemy库的查询操作的教程
2015/04/25 Python
flask session组件的使用示例
2018/12/25 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python实现ip代理池功能示例
2019/07/05 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
在Django中实现添加user到group并查看
2019/11/18 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
深入浅析HTML5中的SVG
2015/11/27 HTML / CSS
美国第一大药店连锁机构:Walgreens(沃尔格林)
2019/10/10 全球购物
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
安踏广告词改编版
2014/03/21 职场文书
班长演讲稿范文
2014/04/24 职场文书
小学班主任评语
2014/12/29 职场文书
Java使用httpRequest+Jsoup爬取红蓝球号码
2021/07/02 Java/Android
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python
i7 6700处理器相当于i5几代
2022/04/19 数码科技