数字华容道 test

仅作个人学习用

因为是完全随机分配数字 因此有较大可能生成无解情况

后续准备     1、Timer     2、解决无解情况

<html>
<head>
<meta charset="utf-8" http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>16宫排序</title>
<style>
input[type="button"]{
  height: 90px;
  width: 180px;
  font-size: 36px;
  font-weight: bold;
}
body {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
}

form {
  text-align: center;
}
</style>
<script language="javascript">
	
sp=16;
var gameOver = false;
function p1(i)
{
	 if (gameOver) {
	    return;
	  }
  if (sp==i+1 && sp %4!=1 || sp==i-1 && sp%4!=0 || sp==i+4 || sp==i-4) 
  {  document.abc.a1[sp-1].value=document.abc.a1[i-1].value;
     document.abc.a1[i-1].value=" ";
     sp=i;
  }
  checkcorrect();
  checknoanswer();
}
function p10()
   { var abc=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
     function Sortfun(a, b){ 
      return 10*Math.random() - 7; 
       }
   abc.sort(Sortfun);
   gameOver = false;
   for (i=0;i<15;i++)
     document.abc.a1[i].value=abc[i];
     document.abc.a1[15].value=" ";
   var buttons = document.querySelectorAll('input[type="button"]');
   for (var i = 0; i < buttons.length-1; i++) {
     buttons[i].disabled = false; 
   }
}  

function checkcorrect()
{
  var flag=true;
  var answer=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
  for(i=0;i<15;i++){
    if(document.abc.a1[i].value!=answer[i]){flag=false;}
  }
  if(flag){
    alert("Accomplished");
	gameOver = true;
	    var buttons = document.querySelectorAll('input[type="button"]');
	    for (var i = 0; i < buttons.length-1; i++) {
	      buttons[i].disabled = true; 
	    }
  }
  return false;
}

function checknoanswer()
{
  var noanswer1=true;noanswer2=true;
  var noanswer1=[1,2,3,4,5,6,7,8,9,10,11,12,13,15,14];
  var noanswer2=[1,2,3,4,5,6,7,8,9,10,11,12,15,14,13];
  for(i=0;i<15;i++){
    if(document.abc.a1[i].value!=noanswer1[i]){noanswer1=false;}
  }
  for(i=0;i<15;i++){
    if(document.abc.a1[i].value!=noanswer2[i]){noanswer2=false;}
  }
  if(noanswer1||noanswer2){
    alert("No Answer");
	gameOver = true;
	    var buttons = document.querySelectorAll('input[type="button"]');
	    for (var i = 0; i < buttons.length-1; i++) {
	      buttons[i].disabled = true; 
	    }
  }
  return false;
}

</script>
</head>

<body>
<form name="abc">
<script>
for (i=0;i<4;i++)
{
  document.write("<p>");
  for (j=0;j<4;j++)
    document.write("<input name='a1' type='button' value=' ' onclick='return p1(" + (i*4+j+1) + ")'/>&nbsp;&nbsp;");
  document.write("</p>");
}

</script>

<!--
<p><input name="a1" type="button" value="1" onclick="return p1(1)">&nbsp;&nbsp;
<input name="a1" type="button" value="2" onclick="return p1(2)">&nbsp;&nbsp;
<input name="a1" type="button" value="3" onclick="return p1(3)">&nbsp;&nbsp;
<input name="a1" type="button" value="4" onclick="return p1(4)">&nbsp;&nbsp;</p>

<p><input name="a1" type="button" value="5" onclick="return p1(5)">&nbsp;&nbsp;
<input name="a1" type="button" value="6" onclick="return p1(6)">&nbsp;&nbsp;
<input name="a1" type="button" value="7" onclick="return p1(7)">&nbsp;&nbsp;
<input name="a1" type="button" value="8" onclick="return p1(8)">&nbsp;&nbsp;</p>

<p><input name="a1" type="button" value="9" onclick="return p1(9)">&nbsp;&nbsp;
<input name="a1" type="button" value="10" onclick="return p1(10)">&nbsp;&nbsp;
<input name="a1" type="button" value="11" onclick="return p1(11)">&nbsp;&nbsp;
<input name="a1" type="button" value="12" onclick="return p1(12)">&nbsp;&nbsp;</p>

<p><input name="a1" type="button" value="13" onclick="return p1(13)">&nbsp;&nbsp;
<input name="a1" type="button" value="14" onclick="return p1(14)">&nbsp;&nbsp;
<input name="a1" type="button" value="15" onclick="return p1(15)">&nbsp;&nbsp;
<input name="a1" type="button" value="16" onclick="return p1(16)">&nbsp;&nbsp;</p>
-->

<p>
<input id="a10" type="button" value="开始" onclick="return p10()">
</p>
</form>

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值