javascript练习28:迷宫,增加了开挂功能

QQ录屏20221127153622

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Document</title>

<style type="text/css">

*{

margin: 0;

padding: 0;

box-sizing: border-box;

color: white;

font-size: 10px;

}

div{

position: relative;

width: 400px;

height: 400px;

margin: 0 auto;

margin-top:60px;

}

table{

border-collapse:collapse;

}

td{

/* 20个小方格 */

width: 20px;

height: 20px;

text-align: center;

}

.left{

border-left:solid 2px black;

}

.right{

border-right:solid 2px black;

}

.top{

border-top:solid 2px black;

}

.bottom{

border-bottom:solid 2px black;

}

label{

position: absolute;

display: inline-block;

width: 14px;

height: 14px;

background-color: black;

border-radius: 7px;

}

button{

position: absolute;

left: 400px;

top: 420px;

width: 20px;

height: 20px;

outline: none;

color: black;

}

</style>

</head>

<body>

<!-- WASD控制圆点移动 -->

<button>炸</button>

<div>

<label style="left: 3px;top: 363px;"></label>

<table>

<tr><td class="top left"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td class="left top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left top right"></td></tr>

<tr><td class="left"></td><td class="left top"></td><td class="top"></td><td></td><td class="left"></td><td class="top"></td><td class="top"></td><td></td><td class="left"></td><td class="left"></td><td></td><td class="left"></td><td class="left"></td><td></td><td class="left"></td><td class="left"></td><td class="left"></td><td></td><td class="left"></td><td class="left right"></td></tr>

<tr><td class="left"></td><td class="left"></td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td></td><td class="left top"></td><td class="top"></td><td></td><td class="left"></td><td class="top"></td><td class="left"></td><td class="left"></td><td class="right"></td></tr>

<tr><td class="left"></td><td></td><td class="left"></td><td class="top left"></td><td class="top"></td><td class="top"></td><td></td><td class="top"></td><td class="left"></td><td class="left"></td><td class="left"></td><td class="left top"></td><td class="left"></td><td class="left top"></td><td class="left"></td><td class="left"></td><td class="left top"></td><td></td><td class="top left"></td><td class="right"></td></tr>

<tr><td class="left"></td><td class="top"></td><td></td><td class="left"></td><td class="left"></td><td class="left top"></td><td class="top"></td><td class="left"></td><td></td><td class="left"></td><td class="left"></td><td class="left"></td><td class="left"></td><td class="left"></td><td></td><td class="left top"></td><td></td><td class="left top"></td><td></td><td class="left right"></td></tr>

<tr><td class="left top"></td><td class="top"></td><td class="top"></td><td class="left"></td><td class="left"></td><td class="top"></td><td></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left"></td><td></td><td class="left"></td><td class="top"></td><td class="left top"></td><td></td><td class="left top"></td><td class="left top"></td><td class="top"></td><td class="left right"></td></tr>

<tr><td class="left"></td><td class="left top"></td><td class="top"></td><td class="left"></td><td class="left top"></td><td class="top"></td><td class="left top"></td><td></td><td></td><td class="left"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td></td><td class="left"></td><td class="top"></td><td class="left"></td><td class="left"></td><td class="left"></td><td class="left right"></td></tr>

<tr><td class="left"></td><td></td><td class="left"></td><td></td><td class="left top"></td><td></td><td class="left"></td><td class="left top">1</td><td class="top">1</td><td class="top">1</td><td class="left"></td><td class="top"></td><td class="left"></td><td class="top"></td><td class="left top"></td><td class="left"></td><td></td><td class="left"></td><td class="left"></td><td class="top right"></td></tr>

<tr><td class="left top"></td><td></td><td class="top"></td><td class="left top"></td><td></td><td class="left top"></td><td></td><td class="left">1</td><td class="top">1</td><td class="left">1</td><td class="top">1</td><td>1</td><td class="left top"></td><td></td><td class="left"></td><td></td><td class="top"></td><td></td><td class="left top"></td><td class="right"></td></tr>

<tr><td class="left"></td><td class="top"></td><td class="top"></td><td class="left"></td><td class="left top"></td><td></td><td class="left top">1</td><td class="top">1</td><td>1</td><td class="left top">1</td><td class="top">1</td><td>1</td><td class="left"></td><td class="top"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td></td><td class="left right"></td></tr>

<tr><td class="left top"></td><td class="top"></td><td class="left"></td><td></td><td class="left"></td><td class="top"></td><td class="left">1</td><td class="top">1</td><td class="top">1</td><td class="left">1</td><td class="top">1</td><td class="top">1</td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="left"></td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="right"></td></tr>

<tr><td class="left"></td><td class="left"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left"></td><td class="top"></td><td class="left top">1</td><td>1</td><td class="left top">1</td><td class="top">1</td><td>1</td><td class="left"></td><td class="left top"></td><td></td><td class="left"></td><td class="left"></td><td class="left"></td><td class="top"></td><td class="left right"></td></tr>

<tr><td class="left"></td><td class="left top"></td><td></td><td class="left"></td><td class="left top"></td><td class="top"></td><td class="left"></td><td class="left">1</td><td class="left top"></td><td>1</td><td class="top">1</td><td class="left top"></td><td></td><td class="left"></td><td class="top"></td><td class="left"></td><td class="top"></td><td class="top"></td><td class="left"></td><td class="left right"></td></tr>

<tr><td class="left"></td><td class="top"></td><td class="top"></td><td></td><td class="left"></td><td class="left"></td><td class="top"></td><td class="left">1</td><td class="left"></td><td class="top"></td><td class="left">1</td><td class="left"></td><td class="top"></td><td class="top"></td><td class="left"></td><td class="top"></td><td class="left"></td><td class="left"></td><td></td><td class="left">1</td></tr>

<tr><td class="left"></td><td class="left top"></td><td class="top"></td><td></td><td class="top"></td><td class="top"></td><td></td><td class="left">1</td><td class="top">1</td><td class="left top">1</td><td>1</td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td></td><td class="left"></td><td class="left"></td><td class="left top">1</td><td class="right">1</td></tr>

<tr><td class="left"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td class="top"></td><td class="left top"></td><td class="top">1</td><td class="top">1</td><td class="left">1</td><td class="left">1</td><td class="top">1</td><td class="left"></td><td class="left"></td><td class="left"></td><td class="left"></td><td class="left top"></td><td></td><td class="left top">1</td><td>1</td><td class="left right"></td></tr>

<tr><td class="left top"></td><td class="top"></td><td></td><td class="left"></td><td class="left"></td><td></td><td class="left">1</td><td class="left">1</td><td class="left">1</td><td class="top">1</td><td class="left">1</td><td></td><td class="left"></td><td class="left"></td><td></td><td class="left"></td><td class="top"></td><td class="left">1</td><td class="left top"></td><td class="right"></td></tr>

<tr><td class="left"></td><td class="top"></td><td class="top"></td><td class="top"></td><td class="left top"></td><td class="left top">1</td><td>1</td><td class="left">1</td><td class="left top">1</td><td>1</td><td class="left">1</td><td class="top">1</td><td class="top">1</td><td class="top">1</td><td class="top"></td><td class="left top">1</td><td class="top">1</td><td>1</td><td class="left"></td><td class="top right"></td></tr>

<tr><td class="top">0</td><td class="top">1</td><td class="left"></td><td class="left">1</td><td>1</td><td class="left">1</td><td class="left top">1</td><td>1</td><td class="left">1</td><td class="top">1</td><td class="left top"></td><td class="top"></td><td class="top"></td><td class="left">1</td><td class="left"></td><td class="left">1</td><td class="left top"></td><td class="top"></td><td class="left top"></td><td class="right"></td></tr>

<tr><td class="top left bottom"></td><td class="bottom">1</td><td class="bottom top">1</td><td class="bottom">1</td><td class="left bottom">1</td><td class="bottom">1</td><td class="bottom left">1</td><td class="bottom top">1</td><td class="bottom top">1</td><td class="bottom">1</td><td class="bottom"></td><td class="left top bottom"></td><td class="bottom"></td><td class="left bottom">1</td><td class="bottom top">1</td><td class="bottom">1</td><td class="left bottom"></td><td class="bottom top"></td><td class="bottom"></td><td class="left bottom right"></td></tr>

</table>

</div>

</body>

<script src="./jquery/jQuery.js"></script>

<script>

var aim=$("label")

var i=18,j=0,z

var tr=$("tr")

//向上移动

function go_top(){

z=1

if(whether_in_maze(aim0.style.left,(parseInt(aim0.style.top)-20)+"px")&&whether_crash(i,j,z)){

aim0.style.top=(parseInt(aim0.style.top)-20)+"px"

i--

tri.getElementsByTagName("td")j.innerText="0"

}

}

//向下移动

function go_bottom(){

z=2

if(whether_in_maze(aim0.style.left,(parseInt(aim0.style.top)+20)+"px")&&whether_crash(i,j,z)){

aim0.style.top=(parseInt(aim0.style.top)+20)+"px"

i++

tri.getElementsByTagName("td")j.innerText="0"

}

}

//向左移动

function go_left(){

z=3

if(whether_in_maze((parseInt(aim0.style.left)-20)+"px",aim0.style.top)&&whether_crash(i,j,z)){

aim0.style.left=(parseInt(aim0.style.left)-20)+"px"

j--

tri.getElementsByTagName("td")j.innerText="0"

}

}

//向右移动

function go_right(){

z=4

if(whether_in_maze((parseInt(aim0.style.left)+20)+"px",aim0.style.top)&&whether_crash(i,j,z)){

aim0.style.left=(parseInt(aim0.style.left)+20)+"px"

j++

tri.getElementsByTagName("td")j.innerText="0"

}

}

//键盘控制移动方向

document.οnkeypress=function(e){

if(e.key=="a")

go_left()

else if(e.key=="s")

go_bottom()

else if(e.key=="d")

go_right()

else if(e.key=="w")

go_top()

}

//限制移动范围:不允许在迷宫之外的范围移动3-397

function whether_in_maze(a,b){

if(parseInt(b)<3||parseInt(b)>397||

parseInt(a)<3||parseInt(a)>397)

return 0

else

return 1

}

//限制移动范围:不允许穿墙而过

function whether_crash(x,y,s){

var td

if(s==1){if(!trx.getElementsByTagName("td")y.className.includes("top")) return 1

else return 0

}

else if(s==2){if(!trx+1.getElementsByTagName("td")y.className.includes("top")) return 1

else return 0

}

else if(s==3){if(!trx.getElementsByTagName("td")y.className.includes("left")) return 1

else return 0

}

else if(s==4){if(!trx.getElementsByTagName("td")y+1.className.includes("left")) return 1

else return 0

}

}

//自动通过迷宫

var btn=$("button")

var g=1

var timer

btn0.οnclick=function(){

timer=setInterval(auto,70)

}

function auto(){

//向上

if(whether_in_maze(aim0.style.left,(parseInt(aim0.style.top)-20)+"px")&&tri-1.getElementsByTagName("td")j.innerText=="1"&&whether_crash(i,j,1)){

go_top()

}

//向下

else if(whether_in_maze(aim0.style.left,(parseInt(aim0.style.top)+20)+"px")&&tri+1.getElementsByTagName("td")j.innerText=="1"&&whether_crash(i,j,2)){

go_bottom()

}

//向左

else if(whether_in_maze((parseInt(aim0.style.left)-20)+"px",aim0.style.top)&&tri.getElementsByTagName("td")j-1.innerText=="1"&&whether_crash(i,j,3)){

go_left()

}

//向右

else if(whether_in_maze((parseInt(aim0.style.left)+20)+"px",aim0.style.top)&&tri.getElementsByTagName("td")j+1.innerText=="1"&&whether_crash(i,j,4)){

go_right()

}

if(i==13&&j==19)

clearInterval(timer)

document.οnkeypress=function(e){

clearInterval(timer)

}

}

</script>

</html>

相关推荐
gis开发之家21 小时前
《Vue3 从入门到大神35篇》Vue3 源码详解(五):effect 依赖收集原理——track 与 trigger 是如何工作的?
javascript·typescript·前端框架·vue3·vue3源码
橘子星1 天前
我一个前端切图仔,凭什么能在浏览器里跑大模型?
前端·javascript·前端框架
半个落月1 天前
用 LangChain JS 做可控写作实验:理解温度参数、提示词与异步调用
javascript·人工智能·后端
观远数据1 天前
Excel到数据资产池:文件数据入湖的治理规范怎么建
前端·javascript·excel
CoderWeen1 天前
我写了个能一步步点着看的 Dijkstra 可视化项目(Vue3 + Leaflet + Generator)
前端·javascript·vue.js
两点王爷1 天前
一个快速加载面和多面数据的html测试页面(可以导出geojson数据文件)
前端·html·gis
爱分享的程序猿-Clark1 天前
【前端分享】vue开发项目,如何实现 从A页面跳转到B页面,并传值!
前端·javascript·vue.js
冰暮流星1 天前
javascript之String方法介绍
开发语言·javascript·ecmascript
Hilaku1 天前
2026 年前端大洗牌:React 服务端到 Vite 的底层重构
前端·javascript·程序员
名字还没想好☜1 天前
React setState 连续调用「丢更新」排查:批量更新与函数式更新
前端·javascript·react.js·react·usestate