JS实现的走迷宫小游戏完整实例

发布时间 - 2026-01-11 02:24:30    点击率:

本文实例讲述了JS实现的走迷宫小游戏。分享给大家供大家参考,具体如下:

先来看看运行效果截图:

完整实例代码如下:

<!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>
<title>JS打造的走迷宫游戏</title>
</head>
<body>
<SCRIPT>
function ShowMenu(bMenu) {
document.all.idFinder.style.display = (bMenu) ? "none" : "block"
document.all.idMenu.style.display = (bMenu) ? "block" : "none"
idML.className = (bMenu) ? "cOn" : "cOff"
idRL.className = (bMenu) ? "cOff" : "cOn"
return false
}
</SCRIPT>
<STYLE>
<!--
A.cOn {text-decoration:none;font-weight:bolder}
#article {font: 12pt Verdana, geneva, arial, sans-serif; background: white; color: black; padding: 10pt 15pt 0 5pt}
#article P.start {text-indent: 0pt}
#article P {margin-top:0pt;font-size:10pt;text-indent:12pt}
#article #author {margin-bottom:5pt;text-indent:0pt;font-style: italic}
#pageList P {padding-top:10pt}
#article H3 {font-weight:bold}
#article DL, UL, OL {font-size: 10pt}
-->
</STYLE>
<SCRIPT>
<!--
function addList(url,desc) {
if ((navigator.appName=="Netscape") || (parseInt(navigator.appVersion)>=4)) {
var w=window.open("","_IDHTML_LIST_","top=0,left=0,width=475,height=150,history=no,menubar=no,status=no,resizable=no")
var d=w.document
if (!w._init) {
d.open()
d.write("<TITLE>Loading...</TITLE><EM>Loading...</EM>")
d.close()
w.opener=self
window.status="Personal Assistant (Adding): " + desc
} else {
window.status=w.addOption(url,desc)
w.focus()
}
}
else
alert("Your browser does not support the personal assistant.")
return false
}
// -->
</SCRIPT>
<STYLE TYPE="text/css">
#board TD {width: 15pt; height: 15pt; font-size: 2pt; }
TD.foot {font-size: 10pt;}
#board TD.start {font-size: 8pt; border-left: 2px black solid; background:yellow; border-top: 2px black solid;text-align: center; color: red}
#board TD.end {font-size: 8pt; text-align: center; color: green}
#message {margin: 0pt; padding: 0pt; text-align: center}
</STYLE>
<SCRIPT LANGUAGE="JavaScript">
var maze = new Array()
var sides = new Array("Border-Top", "Border-Right")
for (var rows=0; rows<13; rows++)
maze[rows] = new Array()
maze[0][0] = new Array(1,1,1,1,1,1,1,1,1,1,1,1)
maze[0][1] = new Array(0,0,1,0,1,0,0,0,0,1,0,1)
maze[1][0] = new Array(1,0,0,0,1,0,1,1,1,0,1,1)
maze[1][1] = new Array(0,1,1,0,0,1,1,0,0,1,0,1)
maze[2][0] = new Array(1,0,1,0,1,0,0,1,1,0,1,1)
maze[2][1] = new Array(0,0,0,0,1,1,1,0,0,0,0,1)
maze[3][0] = new Array(0,1,1,1,1,1,0,0,0,0,1,1)
maze[3][1] = new Array(1,0,0,1,0,0,0,1,1,0,0,1)
maze[4][0] = new Array(0,0,0,0,0,0,1,1,1,1,1,1)
maze[4][1] = new Array(1,1,1,1,1,0,0,0,0,0,1,1)
maze[5][0] = new Array(0,0,0,0,1,0,1,1,1,1,0,0)
maze[5][1] = new Array(1,1,1,1,1,1,0,0,0,1,0,1)
maze[6][0] = new Array(0,0,0,0,0,0,1,1,0,1,0,1)
maze[6][1] = new Array(1,1,1,1,1,1,0,0,0,1,0,1)
maze[7][0] = new Array(1,0,1,0,0,0,1,0,1,1,0,1)
maze[7][1] = new Array(1,1,1,0,1,0,0,1,0,1,1,1)
maze[8][0] = new Array(0,0,0,1,0,0,1,1,0,0,0,0)
maze[8][1] = new Array(0,1,0,1,1,0,0,0,1,1,0,1)
maze[9][0] = new Array(0,0,0,0,0,1,1,1,1,0,1,1)
maze[9][1] = new Array(1,1,1,1,0,0,0,0,0,1,1,1)
maze[10][0] = new Array(0,0,0,0,0,1,1,1,1,1,0,0)
maze[10][1] = new Array(1,1,1,0,1,0,0,0,0,1,0,1)
maze[11][0] = new Array(0,0,1,1,1,1,1,1,1,0,0,0)
maze[11][1] = new Array(1,0,1,0,0,0,0,0,0,0,1,1)
maze[12][0] = new Array(0,0,0,0,0,1,1,1,1,0,1,0)
maze[12][1] = new Array(1,1,0,1,0,0,0,1,0,0,1,1)
function testNext(nxt) {
if ((board.rows[start.rows].cells[start.cols].style.backgroundColor=="yellow") && (nxt.style.backgroundColor=='yellow')) {
message.innerText="I see you changed your mind."
board.rows[start.rows].cells[start.cols].style.backgroundColor=""
return false
}
return true
}
function moveIt() {
if (!progress) return
switch (event.keyCode) {
case 37: // left
if (maze[start.rows][1][start.cols-1]==0) {
if (testNext(board.rows[start.rows].cells[start.cols-1]))
message.innerText="Going west..."
start.cols--
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="yellow"
} else
message.innerText="Ouch... you can't go west."
break;
case 38: // up
if (maze[start.rows][0][start.cols]==0) {
if (testNext(board.rows[start.rows-1].cells[start.cols]))
message.innerText="Going north..."
start.rows--
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="yellow"
} else
message.innerText="Ouch... you can't go north."
break;
case 39: // right
if (maze[start.rows][1][start.cols]==0) {
if (testNext(board.rows[start.rows].cells[start.cols+1]))
message.innerText="Going east..."
start.cols++
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="yellow"
}
else
message.innerText="Ouch... you can't go east."
break;
case 40: //down
if (maze[start.rows+1]==null) return
if (maze[start.rows+1][0][start.cols]==0) {
if (testNext(board.rows[start.rows+1].cells[start.cols]))
message.innerText="Going south..."
start.rows++
document.all.board.rows[start.rows].cells[start.cols].style.backgroundColor="yellow"
} else
message.innerText="Ouch... you can't go south."
break;
}
if (document.all.board.rows[start.rows].cells[start.cols].innerText=="end") {
message.innerText="You Win!"
progress=false
}
}
</SCRIPT>
<P ALIGN=center>请使用键盘上的→←↑↓键进行游戏</P><BR>
<p><TABLE ID=board ALIGN=CENTER CELLSPACING=0 CELLPADDING=0>
<SCRIPT LANGUAGE="JavaScript">
for (var row = 0; row<maze.length; row++) {
document.write("<TR>")
for (var col = 0; col<maze[row][0].length; col++) {
document.write("<TD STYLE='")
for (var cell = 0; cell<2; cell++) {
if (maze[row][cell][col]==1)
document.write(sides[cell]+": 2px black solid;")
}
if ((0==col) && (0!=row))
document.write("border-left: 2px black solid;")
if (row==maze.length-1)
document.write("border-bottom: 2px black solid;")
if ((0==row) && (0==col))
document.write(" background-color:yellow;' class=start>start</TD>")
else
if ((row==maze.length-1) && (col==maze[row][0].length-1))
document.write("' class=end>end</TD>")
else
document.write("'> </TD>")
}
document.write("</TR>")
}
var start = new Object
start.rows = 0
start.cols = 0
progress=true
document.onkeydown = moveIt;
</SCRIPT>
</TABLE>
<P ID="message"> </P>
<br />
</body>
</html>

PS:这里再为大家推荐另一款本站的迷宫在线游戏供大家参考,同样是基于JS实现的:

在线迷宫小游戏:
http://tools./games/migong

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数据结构与算法技巧总结》、《JavaScript数学运算用法总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript动画特效与技巧汇总》、《JavaScript错误与调试技巧总结》及《JavaScript遍历算法与技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# JS  # 走迷宫  # 小游戏  # Three.js 再探 - 写一个微信跳一跳极简版游戏  # 利用原生js实现html5小游戏之打砖块(附源码)  # 原生js编写2048小游戏  # 原生js实现Flappy Bird小游戏  # AngularJS实现的2048小游戏功能【附源码下载】  # 基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)  # JavaScript用200行代码制作打飞机小游戏实例  # 20行js代码实现的贪吃蛇小游戏  # JavaScript实现打地鼠小游戏  # js猜数字小游戏的简单实现代码  # 原生JS实现的跳一跳小游戏完整实例  # 相关内容  # 遍历  # 感兴趣  # 数据结构  # 请使用  # 给大家  # 更多关于  # 所述  # 先来  # 程序设计  # 在线游戏  # 再为  # 讲述了  # 是基于  # serif  # background  # geneva  # arial  # sans 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Java遍历集合的三种方式  进行网站优化必须要坚持的四大原则  音乐网站服务器如何优化API响应速度?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  如何利用DOS批处理实现定时关机操作详解  如何基于云服务器快速搭建个人网站?  如何用AWS免费套餐快速搭建高效网站?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  Laravel路由Route怎么设置_Laravel基础路由定义与参数传递规则【详解】  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  Laravel如何优化应用性能?(缓存和优化命令)  如何快速建站并高效导出源代码?  如何解决hover在ie6中的兼容性问题  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何快速辨别茅台真假?关键步骤解析  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  想要更高端的建设网站,这些原则一定要坚持!  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  网页制作模板网站推荐,网页设计海报之类的素材哪里好?  Laravel如何使用Eloquent ORM进行数据库操作?(CRUD示例)  如何在IIS中配置站点IP、端口及主机头?  Laravel如何发送系统通知?(Notification渠道示例)  米侠浏览器网页背景异常怎么办 米侠显示修复  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  DeepSeek是免费使用的吗 DeepSeek收费模式与Pro版本功能详解  零服务器AI建站解决方案:快速部署与云端平台低成本实践  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  如何快速查询域名建站关键信息?  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  Laravel PHP版本要求一览_Laravel各版本环境要求对照  Laravel怎么调用外部API_Laravel Http Client客户端使用  如何基于PHP生成高效IDC网络公司建站源码?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  装修招标网站设计制作流程,装修招标流程?  原生JS实现图片轮播切换效果  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  Laravel如何保护应用免受CSRF攻击?(原理和示例)  EditPlus中的正则表达式实战(6)  如何用VPS主机快速搭建个人网站?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  如何用腾讯建站主机快速创建免费网站?  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】  Android GridView 滑动条设置一直显示状态(推荐)  ,网页ppt怎么弄成自己的ppt?  如何快速生成凡客建站的专业级图册?  js实现点击每个li节点,都弹出其文本值及修改