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 获取浏览器和屏幕宽高等信息的实现思路及代码
Jul 31 Javascript
JS常用正则表达式总结
Nov 12 Javascript
浅析JQuery UI Dialog的样式设置问题
Dec 18 Javascript
js限制文本框只能输入数字方法小结
Jun 16 Javascript
jQuery中:visible选择器用法实例
Dec 30 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
Nov 13 Javascript
根据输入邮箱号跳转到相应登录地址的解决方法
Dec 13 Javascript
Vue实例简单方法介绍
Jan 20 Javascript
详解express + mock让前后台并行开发
Jun 06 Javascript
js实现时钟定时器
Mar 26 Javascript
js编写简易的计算器
Jul 29 Javascript
js实现简单的无缝轮播效果
Sep 05 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 whois查询API制作方法
2011/06/23 PHP
PHP实现负载均衡的加权轮询方法分析
2018/08/22 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
数理公式,也可以这么唯美
2021/03/10 无线电
jquery each的几种常用的使用方法示例
2014/01/21 Javascript
Ext修改GridPanel数据和字体颜色、css属性等
2014/06/13 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
jQuery表单域属性过滤器用法分析
2015/02/10 Javascript
详解AngularJS中$http缓存以及处理多个$http请求的方法
2016/02/06 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
Angular HMR(热模块替换)功能实现方法
2018/04/04 Javascript
Vue导出页面为PDF格式的实现思路
2018/07/31 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
在vue中实现禁止回退上一步,路由不存历史记录
2020/07/22 Javascript
基于Vue+Webpack拆分路由文件实现管理
2020/11/16 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python内置的字符串处理函数整理
2013/01/29 Python
Python实现的百度站长自动URL提交小工具
2014/06/27 Python
自己使用总结Python程序代码片段
2015/06/02 Python
VSCode Python开发环境配置的详细步骤
2019/02/22 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
html5 canvas实现跟随鼠标旋转的箭头
2016/03/11 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
欧尚俄罗斯网上超市:Auchan俄罗斯
2018/05/03 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
采购部岗位职责
2013/11/24 职场文书
面包店的创业计划书范文
2014/01/16 职场文书
庆祝教师节演讲稿
2014/09/03 职场文书
部队2014年终工作总结
2014/11/27 职场文书
大客户经理岗位职责
2015/04/09 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
三八红旗手主要事迹材料
2015/11/04 职场文书
工作一年自我鉴定
2019/06/20 职场文书
详解Python内置模块Collections
2022/03/22 Python
Redis高并发缓存架构性能优化
2022/05/15 Redis