问题标签 [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 投票
4 回答
349 浏览

java - 如何清理我用 Java 编写的这个方法?

我正在编写一个迷宫生成器。我有一个“细胞”类,如下所示:

我的程序中的迷宫只是一个二维单元格数组。创建数组后,我手动进入并设置对相邻单元格(北、南、东、西)的所有引用。

我要清理的是removeRandomWall()。假设随机选择一个其访问标志设置为 false 的相邻单元格,并移除该单元格和连接它们的相邻单元格中的墙。

所以,它需要考虑所有没有被访问过的相邻单元格,随机选择一个,然后将这个单元格中的墙和相邻的一个设置为false,这样它们之间就有了一条路径。我在上面尝试过,但看起来很笨拙。

谁能帮我吗?

0 投票
3 回答
1077 浏览

java - 我怎么能停止在我的 ascii 迷宫中打印墙壁的两面?

我已经编写了一些为我生成迷宫的代码。迷宫由 (nxn) 个单元组成,每个单元都有一个布尔值来表示一堵墙(北、南、东西)。

它工作正常,我编写了下面的函数来打印出迷宫:

然而,由于单元格共享墙壁,我在打印功能中生成了一种双壁走廊外观:

我应该如何修改我的打印功能,使其看起来像:

我担心当我最终开始使用实际图形而不是 ascii 绘制迷宫时,我会面临类似的问题。

如何修改我的 printMaze 方法,使其从第一个示例变为第二个示例?

万一有人对我的类生成这些源代码感兴趣,请点击此处

0 投票
2 回答
9952 浏览

java - Java:实现一个可绘制类

我正在尝试用 Java 制作迷宫游戏。

Explorer 类代表用户,DrawableExplorer 是图形化代表用户的代码。DrawableExplorer 实现了 Drawable 接口,其中包含:

这编译成功但是,我无法弄清楚为什么我的 DrawableExplorer 类不是:

它要求返回类型,但我的方法不是无效的吗?

编译器错误消息显示“方法声明无效;需要返回类型”

0 投票
2 回答
4843 浏览

user-agent - 如何在 NetLogo 中创建迷宫墙?

我正在尝试创建一个带有 2 个出口的 5x5 网格并在其中放置一些墙壁。换句话说,我想创建一个迷宫或迷宫。

我想知道是否有办法使边界线变粗或仅更改补丁一侧的颜色。

我想只放一个特工进去,通过奖励他一些积分让他找到出口。(Q-学习算法)

有人有想法吗?

如果这是不可能的,你能建议类似的代码吗?

这是我要创建的示例:

替代文字

如被问及,我已经发布了一些我的工作(尽管手动完成这项工作似乎效率低下)。这是我到目前为止所拥有的:

同样,这是一种低效的方法。如果我继续使用这种方法,我怎样才能将 4 个补丁合并为 1 个,以便我可以进入我的代理并居中?

先感谢您。

0 投票
4 回答
2154 浏览

algorithm - 穿越迷宫的算法

我们目前正在编写一个游戏(它是一种非常未知的语言:modula 2),我们遇到的问题如下:我们有一个 17 x 12 网格中的迷宫(不是完美的迷宫)。计算机必须生成从起点 (9, 12) 到终点 (9, 1) 的路径。我找到了一些算法,但是当机器人必须返回时它们不起作用:

或者:

我找到了第一种示例类型的解决方案,但无法解决第二种类型,我为第二种类型编写的解决方案会导致机器人陷入第一种情况。

这是很多代码,所以我会给出这个想法:

WHILE(未到达终点) DO { 尝试向右走,如果没有任何阻碍:如果遇到障碍,请向右走,直到可以向右走,如果您不能再向上走,请尝试向下走,直到可以向右走, (从你第一次被阻挡的地方开始),如果你不能再下去了,试着往左走一步,用方块填充你测试的空间。}

这适用于第一种类型的问题......不适用于第二种问题。现在可能是我开始错了,所以我愿意接受更好的算法或解决方案,特别是如何改进我的算法。

非常感谢!!

0 投票
2 回答
2449 浏览

c# - 在 WinForms.NET 中渲染随机生成的迷宫

我正在尝试创建一个迷宫生成器,为此我在 C# 中实现了随机化 Prim 算法。

但是,生成的结果是无效的。我不知道这是我的渲染,还是无效的实现。因此,对于初学者来说,我想让某人看一下实现:

迷宫是细胞的矩阵。

这是渲染结果的示例:

渲染迷宫 http://dl.dropbox.com/u/1744224/Upload/primrecur.png

编辑好的,让我们看看渲染部分:

我想,要理解这一点,我们需要查看 MazeCell 和 MazeWall 类:

0 投票
1 回答
999 浏览

java - 使用 Roomba 在玩家关卡中进行迷宫导航

这是我的代码:

我试图让 Roomba 以轻微的右曲线连续运行,如果它用激光识别它,它会迅速转离它靠近的每一面墙。我只能对这个机器人使用laser_data[360] 和laser_data[0]。我认为这最终会在迷宫中导航。

但是,我使用的是 Player Stage 平台,当 Roomba 使用此代码靠近墙壁时,Stage 冻结,我不知道为什么。

另外,如果您能想到更好的迷宫导航算法,请告诉我。

谢谢!

0 投票
6 回答
3715 浏览

algorithm - 生成分段迷宫的算法

我想生成一个看起来像这样的迷宫: 替代文字

也就是说,它由一个方向上的路径组成,然后连接起来。我一直在寻找一种算法来生成这样的迷宫,但没有成功。

具体来说,我想要这样的迷宫:

迷宫

因为它不会只向一个方向“运行”。

此外,如果这个迷宫的解决方案需要玩家“回溯”——即不只是一直向上移动,那就太好了。

0 投票
2 回答
3009 浏览

java - 使用 Java 创建迷宫

我使用 Java 创建一个由指定的“行”和“列”组成的迷宫,看起来像一个网格。我计划使用深度优先递归方法在房间(由行和列创建的框)之间“打开门”。

我需要帮助编写一个 openDoor 方法来断开房间之间的链接。

0 投票
14 回答
88393 浏览

algorithm - 编程理论:解决迷宫

有哪些可能的方法来解决迷宫?
我有两个想法,但我认为它们不是很优雅。

基本情况:我们有一个矩阵,这个矩阵中的元素按照它代表一个迷宫的方式排序,一个进一个出。

我的第一个想法是让机器人沿着迷宫的一侧穿过迷宫,直到它走出迷宫。我认为这是一个非常缓慢的解决方案。

第二个通过标记为 1 的每个连续项目,检查它可以去的地方(上、右、下、左)选择一种方式,并在那里继续它的路径。这甚至比第一个慢。

当然,如果我让两个机器人在每个连接处都进行多线程处理会快一点,但这也不是最好的方法。

需要有更好的解决方案来让机器人通过迷宫。

编辑
第一:谢谢你的好答案!

我的问题的第二部分是:如果我们有一个多维图,该怎么办?是否有特殊的做法,或者贾斯汀 L. 的答案是否也适用于此?
我认为这不是这个案子的最佳方式。

第三个问题:
这些迷宫求解算法中哪个/是最快的?(纯属假设)