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

Javascript
java编程教程:JDBC技术简介
浅析Ajax为什么优于JSF
JDK5.0中collection都有哪些变化
对性能和可扩展产生深远影响的J2EE
HTTP消息头字段深入介绍
java教程:网站开发中的入侵问题检测
简要介绍实现多线程环形缓冲的方法
DOM文档如何与XML文件互换?
Java教程:如何实现FTP功能
Bing API的简单了解
Javascript对网页输入框的字数限制
建立支持移动设备访问的网站sitemap
window.onload和body onload
JS教程:window.event对象
网页漂浮广告的关闭的实现代码
JavaScript教程:网页浮动定位提示效果
常用的Javascript代码高亮脚本
滑动导航菜单的变体使用
解决AJAX中文回传乱码
Javascript开发是否预留退路?

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 357 ::
收藏到网摘: 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>