JS写的数字拼图小游戏代码[学习参考]


Posted in Javascript onOctober 29, 2008
<html> <head> 
<title>拼图</title> 
<style> 
td.numTd{ 
width : 20px ; 
height : 20px ; 
} 
div.numDiv{ 
width : 100% ; 
height : 100% ; 
background-color : #000 ; 
color : #FFF ; 
text-align : center ; 
vertical-align : middle ; 
} 
</style> 
<script> 
var currPos = 9; 
function move(event){ 
switch(event.keyCode){ 
case 37 : 
// 左键 
if (currPos % 3 != 0){ 
var currTd = document.getElementById("numTd_" + currPos); 
var nextTd = document.getElementById("numTd_" + (currPos + 1)); 
var temp = nextTd.innerHTML; 
nextTd.innerHTML = " "; 
currTd.innerHTML = temp; 
currPos ++ ; 
} 
break; 
case 38 : 
// 上键 
if (currPos < 7){ 
var currTd = document.getElementById("numTd_" + currPos); 
var nextTd = document.getElementById("numTd_" + (currPos + 3)); 
var temp = nextTd.innerHTML; 
nextTd.innerHTML = " "; 
currTd.innerHTML = temp; 
currPos += 3; 
} 
break; 
case 39 : 
// 右键 
if (currPos % 3 != 1){ 
var currTd = document.getElementById("numTd_" + currPos); 
var nextTd = document.getElementById("numTd_" + (currPos - 1)); 
var temp = nextTd.innerHTML; 
nextTd.innerHTML = " "; 
currTd.innerHTML = temp; 
currPos -- ; 
} 
break; 
case 40 : 
// 下键 
if (currPos > 3){ 
var currTd = document.getElementById("numTd_" + currPos); 
var nextTd = document.getElementById("numTd_" + (currPos - 3)); 
var temp = nextTd.innerHTML; 
nextTd.innerHTML = " "; 
currTd.innerHTML = temp; 
currPos -= 3; 
} 
break; 
default : 
break; 
} 
if (isWin()){ 
alert("恭喜你,过关了!"); 
initNums(); 
} 
} 
function isWin(){ 
for (i = 1; i < 9; i ++ ){ 
var numTd = document.getElementById("numTd_" + i); 
var numDiv = numTd.getElementsByTagName("div"); 
if (i != numTd.innerText){ 
return false; 
} 
} 
return true; 
} 
function initNums(){ 
var numArr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9); 
var newnewNumArr = new Array(); 
do{ 
var tempStr = ""; 
for(i in numArr){ 
var flag = true; 
do{ 
tempNum = numArr[parseInt(Math.random() * 100) % 9]; 
if (tempStr.search(tempNum) == -1){ 
newNumArr[i] = tempNum; 
tempStr += tempNum; 
flag = false; 
} 
} 
while(flag); 
} 
}while(inverNum(newNumArr) % 2 == 0); 

var len = newNumArr.length; 
for(j = 0; j < len; j ++ ){ 
if (newNumArr[j] != 9){ 
document.getElementById("numTd_" + (j + 1)).innerHTML = "<div id='numDiv_"+newNumArr[j]+"' class='numDiv'>" + newNumArr[j] + "</div>"; 
} 
else{ 
document.getElementById("numTd_" + (j + 1)).innerHTML = " "; 
currPos = j + 1; 
} 
} 
// document.getElementById("output").innerText = newNumArr; 
} 
function inverNum(numArr){ 
var len = numArr.length; 
var count = 0; 
for(i = 0; i < len - 1; i ++ ){ 
for(j = i + 1; j < len; j ++ ){ 
if (numArr[j] > numArr[i]){ 
count ++ ; 
} 
} 
} 
// alert("逆序数: "+count); 
return count; 
} 
</script> 
</head> 
<body onkeyup="move(event);" onload="initNums();"> 
<table align="center"> 
<tr> 
<td id="numTd_1" class="numTd"> 
</td> 
<td id="numTd_2" class="numTd"> 
</td> 
<td id="numTd_3" class="numTd"> 
</td> 
</tr> 
<tr> 
<td id="numTd_4" class="numTd"> 
</td> 
<td id="numTd_5" class="numTd"> 
</td> 
<td id="numTd_6" class="numTd"> 
</td> 
</tr> 
<tr> 
<td id="numTd_7" class="numTd"> 
</td> 
<td id="numTd_8" class="numTd"> 
</td> 
<td id="numTd_9" class="numTd"> 
</td> 
</tr> 
</table> 
<table> 
<tr> 
<td id="output"></td> 
</tr> 
</table> 
</body> 
</html>
Javascript 相关文章推荐
document.onreadystatechange事件的用法分析
Oct 17 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
jqgrid 简单学习笔记
May 03 Javascript
简单实用的全选反选按钮例子
Oct 18 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
Sep 22 Javascript
JS动态给对象添加属性和值的实现方法
Oct 21 Javascript
jquery插件bootstrapValidator数据验证详解
Nov 09 Javascript
详解React项目中碰到的IE问题
Mar 14 Javascript
vue使用prop可以渲染但是打印台报错的解决方式
Nov 13 Javascript
小程序跨页面交互的作用与方法详解
Jan 07 Javascript
JavaScript函数、方法、对象代码
Oct 29 #Javascript
js身份证验证超强脚本
Oct 26 #Javascript
javascript引导程序
Oct 26 #Javascript
javascript笔试题目附答案@20081025_jb51.net
Oct 26 #Javascript
Div自动滚动到末尾的代码
Oct 26 #Javascript
Firefox getBoxObjectFor getBoundingClientRect联系
Oct 26 #Javascript
js判断变量是否空值的代码
Oct 26 #Javascript
You might like
PHP取整数函数常用的四种方法小结
2012/07/05 PHP
ubuntu下编译安装xcache for php5.3 的具体操作步骤
2013/06/18 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
ThinkPHP静态缓存简单配置和使用方法详解
2016/03/23 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
JavaScript 产生不重复的随机数三种实现思路
2012/12/13 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
sencha ext js 6 快速入门(必看)
2016/06/01 Javascript
功能强大的Bootstrap效果展示(二)
2016/08/03 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
使用jQuery,Angular实现登录界面验证码详解
2017/04/27 jQuery
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue中的计算属性实例详解
2018/09/19 Javascript
记一次webapck4 配置文件无效的解决历程
2018/09/19 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
Python中实现对list做减法操作介绍
2015/01/09 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python object类中的特殊方法代码讲解
2020/03/06 Python
css3 transform属性详解
2014/09/30 HTML / CSS
Weekendesk意大利:探索多种引人入胜的周末主题
2016/10/14 全球购物
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
意外伤害赔偿协议书
2014/09/16 职场文书
房屋出租协议书范本(标准版)
2014/09/24 职场文书
教师个人教学总结
2015/02/11 职场文书
安全生产先进个人总结
2015/02/15 职场文书
个人工作表现自我评价
2015/03/06 职场文书
小学毕业感言200字
2015/07/30 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
SQL中的三种去重方法小结
2021/11/01 SQL Server
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏
Nginx HTTP跳转至HTTPS
2022/05/15 Servers
Java实现HTML转为Word的示例代码
2022/06/28 Java/Android