当前位置:编程学习 > JS >>

开心数独游戏

JavaScript写的开心数独游戏,玩了几次,找到了一些诀窍,不到一分钟就能破题了,后来就用js写出来,仓促之中难免bug百出,祝您也能破题。
答案:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>开心数独游戏</title>
<style type="text/css">
<!--
* {margin:0px;padding:0px;}ul {list-style-type:none;}#gong {width:189px;text-align:center;border-bottom-width:1px;border-left-width:1px;border-bottom-style:solid;border-left-style:solid;border-bottom-color:#333;border-left-color:#333;height:189px;margin:auto;}#gong li {height:20px;width:20px;overflow:hidden;font-size:12px;line-height:20px;float:left;border-top-width:1px;border-right-width:1px;border-top-style:solid;border-right-style:solid;border-top-color:#333;border-right-color:#333;font-weight:bold;background-color:#E8E8E8;color:#009900;cursor:default;}#gong li input {border-top-style:none;border-right-style:none;border-bottom-style:none;border-left-style:none;width:100%;text-align:center;height:20px;color:#0033FF;border-top-width:0px;border-right-width:0px;border-bottom-width:0px;border-left-width:0px;}#gong li.err,#gong li.err input {background-color:#FF0000;}
-->
</style>
<script language="javascript"> 
var classNum = [1,2,3,4,5,6,7,8,9];
var classArr = new Array();
function game(nan){
  classNum.sort(function(){ return Math.random()>0.5?-1:1; });//打乱数字;
  for(i=0;i<9;i+=3){
   classArr[i/3] = classNum.slice(i,i+3);
  }
  var S = new Array();
  S[0] = new Array();
  for(i=0;i<3;i++){
   classArr.unshift(classArr.pop());
   S[0][i]=new Array();
   S[0][i]=classArr.slice(0,4);
  }
 
  for(i=1;i<3;i++){
   S[i] = new Array();
   for(m=0;m<3;m++){
    S[i][m] = new Array();
    for(n=0;n<3;n++){
     var _arr = S[i-1][m][n].slice(0,4);
     _arr.unshift(_arr.pop());
     S[i][m][n] = _arr;
    }
   }
  }
  var c = S.toString().replace(/(\d),/g,function(){
       var e=arguments[1];
	   e = Math.random()>nan?e:'<input type="text" rel='+e+' maxlength="1" />';
	   return e+"</li><li>";
   });
  ul.innerHTML="";
  ul.innerHTML="<li>"+c+"</li>";
}
function check(){
 var lis = ul.getElementsByTagName('li');
 var i=0,li,err=false;
 while(li=lis[i]){
    li = li.firstChild;
    if(err)return;
   if(li.nodeType!=3){
   var value = li.value;
   if(value=='' || value == ' '){alert('未填写完整,失败!\n重来!');Reset();return;}
    if(parseInt(value)!=parseInt(li.getAttribute('rel'))){
	 var heng = parseInt(i/9);
	 for(j=heng*9;j<(heng+1)*9;j++){
	   var tli = lis[j].nodeType==3?lis[j].innerHTML:lis[j].firstChild.value;
	   tli = parseInt(tli);
	   if(parseInt(value)==tli && i!=j){
	   li.parentNode.className = 'err';
	   lis[j].className = 'err';
	   err = true;
	  }
	 }
	 for(j=i%9;j<81;j+=9){
	   var tli = lis[j].nodeType==3?lis[j].innerHTML:lis[j].firstChild.value;
	  tli = parseInt(tli);
	   if(parseInt(value)==tli && i!=j){
	   li.parentNode.className = 'err';
	   lis[j].className = 'err';
	   err = true;
	   }
	  }
	  if(err){alert('出错了,失败!\n重新开始!');Reset();return;}
	 }
   }
   i++;
 }
 alert('恭喜,满意100分!\n继续!');
 Reset();
}
function daan(){
 var lis = ul.getElementsByTagName('input');
 var i=0,li;
 while(li=lis[i]){
   li.value=li.getAttribute('rel');
   i++;
 }
}
function Reset(){
 var nan=document.getElementById('nan');
 game(Number(nan.options[nan.selectedIndex].value));
}
var div,ul;
window.onload=function (){
div=document.createElement("div");
div.setAttribute("id","gong");
ul = document.createElement("ul");
div.appendChild(ul);
document.getElementById('d').appendChild(div);
 game(0.65);
}
</script>
</head>
<body>
<table width="200" border="0" cellspacing="0" cellpadding="0" style="margin:auto;margin-top:20px;">
  <tr>
    <td><div id="d"></div></td>
  </tr>
  <tr>
    <td height="30" align="center"><select id="nan">
      <option value="0.45">简单</option>
      <option value="0.65" selected="selected">中等</option>
      <option value="0.75">难</option>
    </select><input type="submit" name="Submit" value="重来" onclick="Reset()" /><input type="submit" name="Submit22" value="答案" onclick="daan()" /><input type="submit" name="Submit2" value="交卷" onclick="if(confirm('确定都填对了吗?\n交卷后不可以更改哦\n确定吗?'))check()" /></td>
  </tr>
</table>
</body>
</html>

上一个:生成N个随机数的JS代码
下一个:俄罗斯方块JS游戏——黄文权

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,