数字华容道小案例(源代码)

效果如下:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>数字华容道</title>
		<style>
			#step{
				
				color: red;
				text-align: center;
				margin-top: 50px;
				font-size: 30px;
			}
			#ta{
				width: 400px;
				height: 400px;
				margin: 20px auto;
				border: 1px solid black;
				border-collapse: collapse;
			}
			#ta td{
				width: 100px;
				height: 100px;
				border: 1px solid black;
				text-align: center;
				font-size: 30px;
				background-color: antiquewhite;
			}	
		</style>
	</head>
	<body>
		<p id="step">步数:0</p>
		<table id="ta">
			<tr>
				<td>1</td>
				<td>2</td>
				<td>3</td>
				<td>4</td>
			</tr>
			<tr>
				<td>5</td>
				<td>6</td>
				<td>7</td>
				<td>8</td>
			</tr>
			<tr>
				<td>9</td>
				<td>10</td>
				<td>11</td>
				<td>12</td>
			</tr>
			<tr>
				<td>13</td>
				<td>14</td>
				<td></td>
				<td>15</td>
			</tr>
		</table>
		
		<script>
			var tds=document.getElementsByTagName("td")
		
			var s = document.querySelector('#step')
			var step = 0
			var index=14
			tds[index].style.backgroundColor="white"
			function toLeft(){
				console.log(45);
				if(index % 4 !=3){
					tds[index].innerHTML = tds[index+1].innerHTML
				
					tds[index].style.backgroundColor="antiquewhite"
					tds[index+1].innerHTML=""
					tds[index+1].style.backgroundColor="white"
					index=index+1
					step++
					
					s.innerHTML="步数:" + step
				}
			}
			function toRight(){
				if(index%4 !=0){
					tds[index].innerHTML=tds[index-1].innerHTML
					tds[index].style.backgroundColor="antiquewhite"
					tds[index-1].innerHTML=""
					tds[index-1].style.backgroundColor="white"
					index=index-1
					step++
					
					s.innerHTML="步数:" + step
				}
			}
			function toTop(){
				if(index<12){
					tds[index].innerHTML=tds[index+4].innerHTML
					tds[index].style.backgroundColor="antiquewhite"
					tds[index+4].innerHTML=""
					tds[index+4].style.backgroundColor="white"
					index=index+4
					step++
					s.innerHTML="步数:" + step
				}
			}
			function toBottom(){
				if(index>3){
						tds[index].innerHTML=tds[index-4].innerHTML
						tds[index].style.backgroundColor="antiquewhite"
						tds[index-4].innerHTML=""
						tds[index-4].style.backgroundColor="white"
						index=index-4
						step++
						s.innerHTML="步数:" + step
					}
				}
				function win(){
					if(index !=15){
						return false;
					}
					for(var i=0;i<tds.length-1;i++){
						if(tds[i].innerHTML!=i+1){
							return false
						}
					}
					return true
				}
				document.onkeydown=function(e){
					var kc=e.keyCode
					switch(kc){
						case 37:
						    toLeft()
						    break
						case 38:
						    toTop()
						    break
						case 39:
						    toRight()
						    break
						case 40:
						    toBottom()
						    break
					}
					if(win()){
					document.onkeydown=null
					win1.innerHTML="恭喜通关成功"
					}
				}
				function initialize(){
					var n=300
					for(var i=1;i<=n;i++){
						var num=parseInt(Math.random()*4)
						switch(num){
							case 0:
							    toLeft()
							    break;
							case 1:
							    toTop()
							    break;
							case 2:
							    toRight()
							    break;
							case 3:
							    toBottom()
							    break;
						}
						step=0
						s.innerHTML="步数:"+step
					}
				}
				initialize()
		</script>
	</body>
</html>

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃java的羊儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值