问题标签 [maze]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
10527 浏览

data-structures - 表示迷宫的数据结构

我正在写一个动态迷宫游戏,每次迷宫的结构都会改变(有些门会关闭,有些门会打开。像HP4中的Triwazard)。谁能建议我哪种数据结构最适合代表这一点?

0 投票
3 回答
556 浏览

java - 令人困惑的Java语法

我正在尝试将以下代码(来自Wikipedia)从 Java 转换为 JavaScript:

无论如何,当我遇到一些我不明白的地方时,我很快就开始了:

我不明白为什么在“迷宫”参数后面有四组括号而不是只有两组,因为“迷宫”是二维数组,而不是四维数组。

我确信这是有充分理由的。问题是,我就是不明白

谢谢!

0 投票
1 回答
928 浏览

java - 需要以某种方式跟踪数组中访问的坐标

我需要存储一个数组(二维数组)的元素坐标,这是一个 java 迷宫项目。我的程序使用 int plyrX 和 plyrY 的变量来存储位置,即 0 1,当玩家在迷宫中移动时,x 和 y 的值会改变到玩家决定移动的任何位置。

我的问题是我似乎无法将位置存储到数组中,例如,如果玩家从 0 1 开始并移动到 10 1,我需要能够将这些值存储到数组中,以便我可以重新使用它们创建上一场比赛的重播,问题是存储在数组元素中的值似乎总是 x 和 y 的最后一个值,在本例中为 24 37。

这是moves方法和spaces方法的部分代码,玩家可以选择一个char并输入需要移动的空格数量,如您所见,变量plyrx或plyry被赋予了plyrx plyry+或-数量的值空间,这就是让玩家在迷宫中移动的原因。我似乎无法弄清楚的是在每次移动后存储 x 和 y 的值。

0 投票
1 回答
285 浏览

javascript - 按位运算 - 到底发生了什么?

我有以下用于生成 2D 迷宫的 JavaScript 脚本:

我想扩展脚本,使其创建一个六轴 3D 迷宫。但是,为了做到这一点,我必须了解按位运算以及它们的用途。有人可以向我解释为什么原作者选择使用按位运算,以及他们在脚本中到底在做什么?

谢谢!

[编辑-结论]既然问题已经解决,仅供参考,这里是脚本的 3D 版本:

0 投票
1 回答
4067 浏览

java - 用 Java 制作 3D 迷宫

目标


我正在制作一个生成 3D 迷宫的程序,并且在创建算法方面遇到了一些麻烦。为了便于交互,它将是一个有一个入口和一个出口的矩形棱柱。

算法


问题是算法的实际编码:我认为最好的方法是创建一个名为 的类MazeBlock,它有六个布尔状态(上、下、左、右、进、出),表示迷宫的方向可以下一个。使用MazeBlocks 的 3D 数组,我想填充迷宫,每次填充检查块的左、右、上、下、前面和后面,看看是否有任何开口到附上。

我已经有一个可以制作边缘的工具,将随机开放的插槽放置在迷宫内部。我唯一遇到的问题是实际的内部,确保迷宫有一个入口、一个出口和一个穿越它的解决方案(我曾经在一本弹出书中解决了一个“困难”的 3D 迷宫,只需与预期相反的几步方向。

问题


正如我所说,我认为我对算法有基本的想法,但我不知道如何编码。有人可以为此提出一个相对快速地完成任务的Java算法吗?

该解决方案不得使用外部库。

0 投票
2 回答
2560 浏览

python - 用python制作迷宫图

嘿,我正在尝试使用 Python 中的字典制作图表。我正在使用一个txt包含迷宫的文件(b 表示墙壁 a 表示路径),并且我正在尝试制作一个字典,其中列出了迷宫中所有可能的移动(简单的步骤,而不是完整的路径)。关于我应该从哪里开始的任何想法?我从来没有用过字典。

非常感谢你的帮助,这让我有了一个很好的开始。还有一个问题,我从一个有效的房子开始检查所有可能的路径。在那之后,我不得不搬到另一所房子去检查那里的路径。我怎样才能确保我没有无限循环或重新检查我已经检查过的房子?

0 投票
1 回答
762 浏览

java - Java 动态矩阵

好的,所以标题说明了什么,但我正在寻找为迷宫制作各种编辑器。我有一个任务是制作一个迷宫求解器。我通过阅读文件来做到这一点。第一行有行数和列数。之后就是一个符号迷宫来制作迷宫。我跑遍了每个地方,并根据符号制作了一个矩阵,其中的数字代表那里的内容。

那是我出来的矩阵。现在我已经解决了这个问题,所以这不是问题。但我想要它,所以我可以询问行数和列数,画一个大小的矩形,制作一个全为 0 的矩阵 [行] [列] 大,适合屏幕,根据矩阵对其进行网格化,然后当他们单击矩阵 [0] [0] 的框,它将其更改为 1,因此每个网格框都将其更改为代表矩阵中一个点的框。

这样我可以让他们做一个迷宫,然后让程序解决它,或者他们可以保存它。

当然这是我遇到问题的地方,我如何根据行数和列数绘制一个有网格的矩形,然后让它知道他们点击的位置......

任何帮助都会很棒。

编辑:好的,我让它根据给定的行和列绘制迷宫。我让它检测到点击,它可以放在我点击的地方。但它并没有改变整个矩阵,然后重新绘制整个事情。

0 投票
2 回答
30318 浏览

python - List.append() 将所有元素更改为附加项

我的用 Python 制作的迷宫生成程序似乎有问题。我正在尝试随机创建一条在选定点分支出来的路径,这些点会随着它的进行而存储。当迷宫到达死胡同时,它将通过测试最高值而不是弹出该值并进入下一个,对访问过的点进行排序,直到它到达一个不是死胡同的地方。但是,当我尝试将项目附加到我用来保存我去过的空间的列表中时,会发生一些奇怪的事情,我以前从未见过它。这是代码,查看它的最佳方法是运行它,直到它一直运行。我还没有真正找到解决死胡同问题的方法,所以如果有人也可以帮助我解决这个问题,那就太好了。

如您所见,它从 0,0 开始,然后计算出可能的路径。它从这些中随机选择并将房间那一侧的值设置为 0,0 到 1,这意味着通道。2 表示墙,0 表示出界。4 只是一个占位符,因为所有值都应在迷宫完全生成时填充。

如果有人可以帮助我,那将非常好,非常感谢。提前致谢。

0 投票
2 回答
793 浏览

python - 迷宫不是随机的

嘿,我正在构建一个生成迷宫的程序,以便稍后将路径转换为我的图形部分。我的大部分工作都在工作,但是,每次你只要走东线和南线,你就会到达终点。即使我将宽度设置为 64,因此迷宫是 64*64,我也可以选择这 2 个选项并每次都到达终点。我真的不明白它为什么这样做。代码如下,很容易理解。

正如你所看到的,我认为问题出在我生成迷宫的地方,但是,当我让它直到当前点结束时,它并没有填满每个迷宫,通常只是一条笔直的路径. 感谢您的帮助。

更新:我已将生成迷宫的 for 循环更改为简单的 while 循环,它似乎工作得更好。似乎当 for 循环运行时,它并没有递归地运行,但是,在 while 循环中它完全没问题。但是,现在所有的方块都没有填写。

0 投票
2 回答
2668 浏览

java - 墙跟随迷宫求解器

我的迷宫求解算法遇到了一些问题。我正在尝试实施左手规则。

方向始终设置为迷宫求解器所面对的当前方向。

turnX 根据您当前面对的方向改变方向

move 函数返回迷宫求解器在该方向上移动 1 个空间的方向。

谁能指出我正确的方向?我确信有一些简单的递归方式可以实现,但我似乎无法解决。

目前我在这两个测试中失败了:

在此处输入图像描述

任何帮助将不胜感激。