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 条件注释详解总结(附实例代码)
Aug 29 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
Aug 25 Javascript
javascript bom是什么及bom和dom的区别
Nov 26 Javascript
JavaScript简单实现鼠标移动切换图片的方法
Feb 23 Javascript
AngularJS动态生成div的ID源码解析
Aug 29 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
js实现黑白div块画空心的图形
Dec 13 Javascript
vue项目中仿element-ui弹框效果的实例代码
Apr 22 Javascript
Vue项目中使用jquery的简单方法
May 16 jQuery
vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)
Feb 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 伪造本地文件包含漏洞的代码
2011/11/03 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
初识Laravel
2014/10/30 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
最好用的省市二级联动 原生js实现你值得拥有
2013/09/22 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
JS继承用法实例分析
2015/02/05 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
Node.js返回JSONP详解
2016/05/18 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
js实现点击每个li节点,都弹出其文本值及修改
2016/12/15 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
axios简单实现小程序延时loading指示
2018/07/30 Javascript
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
Python面向对象编程基础解析(二)
2017/10/26 Python
python enumerate函数的使用方法总结
2017/11/15 Python
Python使用django框架实现多人在线匿名聊天的小程序
2017/11/29 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python可视化实现代码
2019/01/15 Python
Pycharm之快速定位到某行快捷键的方法
2019/01/20 Python
Python零基础入门学习之输入与输出
2019/04/03 Python
python实现简单五子棋游戏
2019/06/18 Python
python中pygame安装过程(超级详细)
2019/08/04 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
平面设计的岗位职责
2013/11/08 职场文书
面料业务员岗位职责
2013/12/26 职场文书
供货协议书范本
2014/04/22 职场文书
岗位安全生产责任书
2014/07/28 职场文书
2016特色励志班级口号
2015/12/24 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
Navicat Premium自定义 sql 标签的创建方式
2022/09/23 数据库