基于JS的网页迷宫游戏 很棒的作品,打个包发我一下吧,[email protected]____________卜咯米WEB设计 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 其实就是一个图的遍历:1、在迷宫中任意选一个点作为起点;2、把起点作为当前点;3、检查迷宫中是否还有未遍历到的点,如果所有点都已遍历过,跳到步骤10;4、把当前点记录到遍历历史记录中;5、取得当前点周围(上、下、左、右)还没遍历过的点的位置,记录为数组A1;6、如果A1长度为0,跳到步骤9;7、从A1中随机取一个点作为当前点;8、回到步骤3;9、退回到历史记录中的上一个点;10、遍历完成。然后再根据遍历结果生成迷宫。关于每个格子的数据,是这样记录的:每一个格子有4条边,每条边有两种状态(可通过、不可通过),所以每个格子有2^4=16种状态。将可通过记为1,不可通过记为0,每个格子的4条边,按上、右、下、左的顺序分别作为一个二进制数字的个、十、百、千位,这样,每一个格子的状态都可以用一个数字来表示。比如:1001表示这个格子的上边、左边可以通过,右边、下边不可以通过。当然,代码中这个数字是用10进制来表示的,每个格子的状态可能是0-15中的某个数,比如1001即是2^3+2^0=9。判断每个格子某个方向是否能通过时是这样的:因为上、右、下、左四个方向分别代表二进制数字的个、十、百、千位,即2^0、2^1、2^2、2^3,即1、2、4、8,所以,判断一个格子的某个方向是否能通过时,只需要将那个格子的状态数字与对应方向的数字按位与,如果结果不为0则说明可以通过,比如:格子的状态数字是9,判断是否能从上边通过:9 & 1 = 1,即可以通过;是否能从右边通过:9 & 2 = 0,即不可以通过;下边:9 & 4 = 0,即不可以通过;左边:9 & 8 = 9,即可以通过。主要思路就是上面这些。 9 & 8 = 8,上面写错了。 是啊,正在考虑怎么优化,呵呵。另外,如果在Chrome浏览器里生成会感觉比较快,Chrome浏览器的JS引擎果然厉害。 添加了下载地址,可以在 http://www.sansi.org/toy/mg/mg.html 右上角看到。 下载地址又移到左下角去了,呵呵。页面布局可能会不时地有调整,下载地址固定为:http://code.google.com/p/sansi/downloads/list。 呵呵,不错...看了下代码,可以用外挂:javascript:mg.me.moveTo(mg.grids.length-1); 呵 最新的关键部分代码见:http://code.google.com/p/sansi/source/browse/trunk/wwwroot/toy/mg/js/mg.js Extjs 解析后台xml数据 怎么让背景色慢慢的渐变显示? 设为首页是的脚本错误! 在一个循环中,如何得到其中最大值, 怎样用JS实现打开一个新生成的页面 分数累加到200分啦,大家赶快帮我啊 aralejs/switchable怎么在循环滚动是做到首尾相接 css中怎么实现td中不换行的功能 关于loading的问题 如何实现结点的展开 Iframe 在嵌入网页的时候,能否只嵌入一部分. 关于“JavaScript拖放效果 ”,嵌入iframe如果处理?
其实就是一个图的遍历:1、在迷宫中任意选一个点作为起点;
2、把起点作为当前点;
3、检查迷宫中是否还有未遍历到的点,如果所有点都已遍历过,跳到步骤10;
4、把当前点记录到遍历历史记录中;
5、取得当前点周围(上、下、左、右)还没遍历过的点的位置,记录为数组A1;
6、如果A1长度为0,跳到步骤9;
7、从A1中随机取一个点作为当前点;
8、回到步骤3;
9、退回到历史记录中的上一个点;
10、遍历完成。然后再根据遍历结果生成迷宫。
关于每个格子的数据,是这样记录的:每一个格子有4条边,每条边有两种状态(可通过、不可通过),所以每个格子有2^4=16种状态。
将可通过记为1,不可通过记为0,每个格子的4条边,按上、右、下、左的顺序分别作为一个二进制数字的个、十、百、千位,这样,每一个格子的状态都可以用一个数字来表示。比如:1001表示这个格子的上边、左边可以通过,右边、下边不可以通过。当然,代码中这个数字是用10进制来表示的,每个格子的状态可能是0-15中的某个数,比如1001即是2^3+2^0=9。判断每个格子某个方向是否能通过时是这样的:
因为上、右、下、左四个方向分别代表二进制数字的个、十、百、千位,即2^0、2^1、2^2、2^3,即1、2、4、8,所以,判断一个格子的某个方向是否能通过时,只需要将那个格子的状态数字与对应方向的数字按位与,如果结果不为0则说明可以通过,比如:格子的状态数字是9,
判断是否能从上边通过:9 & 1 = 1,即可以通过;
是否能从右边通过:9 & 2 = 0,即不可以通过;
下边:9 & 4 = 0,即不可以通过;
左边:9 & 8 = 9,即可以通过。主要思路就是上面这些。
是啊,正在考虑怎么优化,呵呵。另外,如果在Chrome浏览器里生成会感觉比较快,Chrome浏览器的JS引擎果然厉害。
添加了下载地址,可以在 http://www.sansi.org/toy/mg/mg.html 右上角看到。
下载地址又移到左下角去了,呵呵。页面布局可能会不时地有调整,下载地址固定为:http://code.google.com/p/sansi/downloads/list。
呵