JavaScript 迷宫代码失败
JavaScript maze code failing
我有一个迷宫绘图功能,它没有按我想要的方式工作。 目前,它的工作原理是取一个中点,然后找到它的上方、下方、左侧和右侧的位置 - 并将它们放在一个数组中。 然后,它会检查其中是否有任何这些在迷宫网格之外,并将它们从数组中删除。 然后它检查是否已经访问过任何内容(这将是一个迷宫函数,但现在它只是画一条长虚线摆动线(并从数组中删除它们。
然后,如果没有剩余的选项,它将退出或返回,否则它将绘制一个彩色方块并再次运行该函数。
你可以在这里看到它,目前我的网格非常小,可以放大我遇到的 2 个问题:
-
它经常认为负坐标是可以的。 这让我觉得这些台词有问题:
if(options[i][0]<0 || options[i][1]<0 || options[i][0]>size-1 || options[i][1]>size-1){ // ... let us know that you're removing them... console.log("splicing: out of bounds "+options[i][0]+","+options[i][1]); // ... then remove them options.splice(i, 1);
-
它也经常不会注意到已经访问过一个广场,并且会写在它们上面,这让我认为这条线没有按预期工作:
if(options.length > 0){
如果您启动控制台,则有很多输出可以解释正在发生的事情,如果它似乎工作正常,只需点击刷新几次,它就会出错 - 特别是如果它最终出现在右上角早期。
我当前的代码在这里:http://djave.co.uk/hosted/maze/js/script.js 但如果它有帮助,还有一个包含所有内容的 zip 文件 http://djave.co.uk/hosted/maze/maze.zip
如果你想让我澄清任何事情,只需评论。
注意,它目前应该跳过一个正方形,所以它不会是一条连续的线。
问题是您正在拼接正在迭代的同一数组。因此,在循环的第二次迭代中,当x=4, y=0
时,您有以下内容:
i=1, options[[2,0],[6,0],[4,-2],[4,2]]
拼接第二个选项后,数组将发生变化,第三次迭代将具有以下内容:
i=2, options[[2,0],[4,-2],[4,2]]
请注意,[4,-2]
被跳过。最简单的解决方法是使用 $.grep
options = $.grep(options, function(option, index) {
return option[0]>=0 && option[0]<size && option[1]>=0 && option[1]<size;
});
这将遍历数组并返回一个对象数组,其中 grep 返回 true
.当您遍历已经访问过的正方形时,您还应该做同样的常规操作。
- 如何使用onclick事件触发此代码.我尝试过,但失败了
- 解析云代码不会记录/警告成功或失败
- jQuery代码在Firefox中工作,但在IE中失败
- 执行Haxe代码时Ant构建失败
- *简单*解析云代码查询失败”;TypeError:无法调用方法'获取'未定义的“检索该信息”;
- 云代码(javascript)失败,原因是:{代码:1,消息:内部错误
- 只有从Node运行时,Rsync才会失败,退出代码为23
- node.js非阻塞代码示例失败
- 检查 http 响应代码以显示相应的失败消息
- JS验证在正常速度下失败,但在单步执行代码时有效
- 解析云代码部署失败,并显示消息“更新失败,出现内部错误”
- 带有 AJAX 下拉菜单的代码点火器在form_validation失败并重定向/重新加载视图后不起作用
- JSON 失败并继续执行代码
- 防止 php 在 Javascript 验证失败后执行代码,并防止某些字符使用 JS
- 弹出窗口代码失败
- Javascript代码仅在FireFox中的try-catch块中失败
- 为什么我的窗口导航代码失败
- JavaScript代码不断失败
- FireFox中HTML/iframe错误-组件返回失败代码:0x80004005 (NS_ERROR_FAILURE)
- gruntjs遇到失败代码后进行清理