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 相关文章推荐
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
Feb 07 Javascript
node.js 一个简单的页面输出实现代码
Mar 07 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
Feb 05 Javascript
jquery 为a标签绑定click事件示例代码
Jun 23 Javascript
JQuery中的事件及动画用法实例
Jan 26 Javascript
javascript常用功能汇总
Jul 05 Javascript
JS解决移动web开发手机输入框弹出的问题
Mar 31 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
解决vue router使用 history 模式刷新后404问题
Jul 19 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
详解vue后台系统登录态管理
Apr 02 Javascript
Jquery $.map使用方法实例详解
Sep 01 jQuery
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
yii添删改查实例
2015/11/16 PHP
PHP实现查询两个数组中不同元素的方法
2016/02/23 PHP
php回调函数处理数组操作示例
2020/04/13 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
js 弹出菜单/窗口效果
2011/10/30 Javascript
解析URI与URL之间的区别与联系
2013/11/22 Javascript
nodejs的10个性能优化技巧
2014/07/15 NodeJs
Javascript函数式编程简单介绍
2015/10/11 Javascript
从重置input file标签中看jQuery的 .val() 和 .attr(“value”) 区别
2016/06/12 Javascript
javascript运算符——位运算符全面介绍
2016/07/14 Javascript
EasyUI折叠表格层次显示detailview详解及实例
2016/12/28 Javascript
js基于FileSaver.js 浏览器导出Excel文件的示例
2017/08/15 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
Python解释执行原理分析
2014/08/22 Python
python在不同层级目录import模块的方法
2016/01/31 Python
Python中random模块生成随机数详解
2016/03/10 Python
在python中bool函数的取值方法
2018/11/01 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
实习老师个人总结的自我评价
2013/09/28 职场文书
学习张丽丽心得体会
2014/09/03 职场文书
2014各大专业毕业生自我评价
2014/09/17 职场文书
教师师德师风整改措施
2014/10/24 职场文书
升职感谢信
2015/01/22 职场文书
运动会新闻稿
2015/07/17 职场文书
2016年父亲节寄语
2015/12/04 职场文书
聊一聊Redis与MySQL双写一致性如何保证
2021/06/26 Redis
SpringBoot集成MongoDB实现文件上传的步骤
2022/04/18 MongoDB