<!DOCTYPE html>
<html>
<head>
<title>js抽奖</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1.0 ,user-scalable=no">
<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() {
//跑马灯变速
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>
幸运大转盘游戏