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 相关文章推荐
JavaScript中的new的使用方法与注意事项
May 16 Javascript
jquery中的事件处理详细介绍
Jun 24 Javascript
处理及遍历XML文档DOM元素属性及方法整理
Aug 23 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
jstree创建无限分级树的方法【基于ajax动态创建子节点】
Oct 25 Javascript
获取jqGrid中选择的行的数据
Nov 30 Javascript
React-Native中禁用Navigator手势返回的示例代码
Sep 09 Javascript
React Native自定义控件底部抽屉菜单的示例
Feb 08 Javascript
基于element-ui组件手动实现单选和上传功能
Dec 06 Javascript
jQuery实现高级检索功能
May 28 jQuery
5种方法告诉你如何使JavaScript 代码库更干净
Sep 15 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验证码类(分享)
2013/08/06 PHP
php 二维数组时间排序实现代码
2016/11/19 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
JavaScript的单例模式 (singleton in Javascript)
2010/06/11 Javascript
JQuery中DOM事件合成用法实例分析
2015/06/13 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
JavaScript原型及原型链终极详解
2016/01/04 Javascript
Google 地图事件实例讲解
2016/08/06 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
原生javascript实现分页效果
2017/04/21 Javascript
javascript编写简易计算器
2017/05/06 Javascript
vue动态路由配置及路由传参的方式
2018/05/23 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
antd Form组件方法getFieldsValue获取自定义组件的值操作
2020/10/29 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
2021/02/14 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
Python中字符串的常见操作技巧总结
2016/07/28 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python3 实现验证码图片切割的方法
2018/12/07 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
2018/12/12 Python
Python内置数据类型list各方法的性能测试过程解析
2020/01/07 Python
pycharm远程连接vagrant虚拟机中mariadb数据库
2020/06/05 Python
python爬虫 requests-html的使用
2020/11/30 Python
Tuckernuck官网:经典的美国品质服装、鞋子和配饰
2021/01/11 全球购物
财务经理的岗位职责
2013/12/17 职场文书
银行批评与自我批评
2014/02/10 职场文书
护士演讲稿优秀范文
2014/04/30 职场文书
给市场的环保建议书
2014/05/14 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
Html5调用企业微信的实现
2021/04/16 HTML / CSS
在CSS中使用when/else的方法
2022/01/18 HTML / CSS