当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JS写的数字拼图小游戏代码[学习参考]

Javascript
用Javascript实现锚点(Anchor)间平滑跳转
实现png图片和png背景透明(支持多浏览器)的方法
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
用DIV完美模拟createPopup 弹出窗口(修正版),支持Firefox,ie,chrome
JavaScript 中级笔记 第一章
IE与Firefox在JavaScript上的7个不同写法小结
MooTools 1.2介绍
Mootools 1.2教程(2) DOM选择器
Mootools 1.2教程(3) 数组使用简介
在IE下获取object(ActiveX)的Param的代码
ExtJS 配置和表格控件使用
javascript 缓冲效果实现代码 推荐
html数组字符串拼接的最快方法
JavaScript 浮动定位提示效果实现代码
类似CSDN图片切换效果脚本
javascript 面向对象编程 function也是类
javascript 面向对象编程 聊聊对象的事
javascript 面向对象编程 function是方法(函数)
[原创]基于innerHTML中的script广告实现代码[广告全部放在一个js里面]
jQuery slider Content(左右控制移动)

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 251 ::
收藏到网摘: n/a

昨天没事做,就用JS写了个数字拼图的小游戏,自娱自乐。 可惜关于逆序数的问题还没解决,现在有时是拼不成的,大家见谅了。
复制代码 代码如下:

<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>