问题标签 [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.
java - 使用 Java GUI 绘制迷宫 - 矩形一个接一个打印
给定以下代码:
类 BasicShapes
我需要画迷宫,每两个单元格之间有分隔符作为门/墙。在方法 drawMaze() 中,我首先创建一个带有顶点和边(vertices=rooms,edges=Door/Wall)的图 G=(V,E),然后我想使用它。
在while循环中,我按边数运行循环,每次我得到两个房间的坐标(在x,y平面上),我想用连接器(墙/门)打印第一个房间与另一个房间,但每次第一个房间都印在另一个房间上(以及其余的边缘)。
我该如何解决?
问候,罗恩
java - 尝试放大迷宫的 GUI 时重叠的矩形
我对迷宫和 GUI 的冒险仍在继续,目前我可以看到任何图形G=(V,E)
,其中顶点是房间,边缘是连接器(门或墙),但矩形的尺寸太小,所以我试图放大它们,但矩形一个接一个。
给定以下代码:
输出:
绿色矩形是rooms
和red
并且blue
是connectors
。正如你所看到的,矩形太小了,我需要一个像“60”这样的大小。但是,我似乎找不到 and 的正确值组合fillRectangle
,x,x1,y,y1
其中矩形不会彼此重叠。
有人可以解释我如何解决这个问题吗?
c - 优化我的递归迷宫求解器的方法?
我开发了以下 C 程序来找到迷宫中所有可能的路径。它必须穿过迷宫中的每个房间。这就是为什么“54”在此刻被硬编码的原因,因为对于我传入的 8*7 阵列,有 54 个开放的房间。我会解决这个问题并在我重写时动态传递它。但是,我正在寻找一些帮助来提高代码效率 - 它找到了超过 300,000 条可能的路径来完成我正在经过的迷宫,但它运行了将近一个小时。
java - 使用 HashMap 的 Set 迭代器不会产生值/键?
给定以下代码:
类坐标
封装模型;
还有一个 Game 类的方法:
HashMap
没有迭代器,所以我使用 Set 来获取哈希图的元素。当我想迭代 的值时,我的问题就开始了HashMap
,但由于那是不可能的,所以我尝试了Set
,但Set
返回的是 anObject
而不是Coordinate
对象本身。有没有办法得到它?
问候,罗恩
java - 如果我更改当前窗口尺寸(Java),Gui 生成器会重新生成我的迷宫
给定以下代码:
听众:
以及绘制迷宫的方法
我的问题是迷宫的窗口创建后,如果我用鼠标改变窗口的尺寸,那么该方法drawMaze
会在当前窗口中创建一个新的迷宫。这显然是一个错误,那么我的错误在哪里?也许与Constructor
班级有关Game
?
问候罗恩
java - 使用栈遍历解迷宫——Java
所以我正在尝试创建一个迷宫求解程序来解决 X 和 O 的迷宫。我想做的是创建一个点类,这样我就可以创建一个二维点数组,这将允许打印到输出页面以及实现堆栈相对简单。
我想在实际程序本身中实现的一般思想的最简单算法我认为应该是:
但是我无法提出更深入的算法,也无法确定我的 Points 课程。我知道对于点我应该设置 X 坐标,并设置 Y 坐标以及两者的吸气剂。你认为我需要比这两个更多的方法吗?就像,我是否应该创建一个传递 x 坐标和 y 坐标作为参数的方法,这样我就可以将它们作为一个整体推在一起,而不是单独设置 x 和 y?
这是一个示例迷宫的样子,您从右下角开始并尝试遍历左上角,其中 X 为墙壁,O 为迷宫中的开放空间:
java - 使用非递归回溯算法生成迷宫的问题
我正在开发一款适用于 Android 的游戏,其中将随机生成可探索区域。现在我只是想生成迷宫(有一些 ASCII 艺术输出,所以我可以看到它),我已经做了大约 4-5 天,但我只是难住了。
我正在尝试使用“深度优先搜索”算法,并且我能找到的所有示例都使用递归回溯。由于这适用于 Android 并且手机相对较弱,因此递归很快会导致调用堆栈溢出,这就是为什么我尝试使用堆栈来编写自己的算法进行回溯。
我想出了这个解决方案,使用 MazeGenerator 类和 MazeCell 类。
迷宫生成器:
迷宫单元:
这会产生如下所示的结果
请注意每个单元如何始终连接到其上下邻居。我无法弄清楚这里出了什么问题。
虽然 MazeCell 的 setNeighbor 函数中的检查看起来应该足够了,但我添加了一些只是为了看看会发生什么。这是第二个 generateMaze() 方法:
它会产生这样的结果
注意段是如何被分解的。
除了这里提到的之外,我已经玩过它很多,但没有任何东西显示出任何真正的改进——大多数最终看起来就像第二张照片。有什么帮助吗?
java - 在 Java 中创建迷宫求解算法
我被分配了用 Java 创建迷宫求解器的任务。这是作业:
字符“X”代表墙壁或阻挡位置,字符“O”代表开放位置。你可以假设迷宫的入口总是在右下角,出口总是在左上角。您的程序应将其输出发送到文件。如果找到路径,则输出文件应包含该路径。如果找不到路径,则应向文件发送一条消息。请注意,迷宫可能有多个解法路径,但在本练习中,您只需要找到一种解法,而不是所有解法。
您的程序应该使用堆栈来记录它正在探索的路径,并在到达阻塞位置时回溯。
确保在编写代码之前编写完整的算法。随意创建任何其他课程,以帮助您完成作业。
无论如何,我设置的是一个 Points 类,它具有用于在所有基本方向上行驶的 set/get 方法,这些方法将返回布尔值,如下所示:
}
我只是在主要解决实际问题时遇到问题。这是我所拥有的:
除了任何语法错误,你们能给我一些帮助吗?非常感谢。
javascript - Javascript - Randomized Prim's algorithm问题Randomized Prim's algorithm
我正在尝试在 javascript 中创建一个随机迷宫生成器。
那里可能已经有工作示例,但我正在尝试自己解决这个问题(嗯,尽可能多)
我遇到的问题是我的脚本只运行了几个块然后停止。
我认为问题在于我对我所遵循的解释的理解(来自这个维基百科页面http://en.wikipedia.org/wiki/Maze_generation_algorithm)
该算法是 Prim 算法的随机版本。
从一个充满墙壁的网格开始。
选择一个单元格,将其标记为迷宫的一部分。将单元格的墙壁添加到墙壁列表中。
虽然列表中有墙:
从列表中随机选择一面墙。如果对面的牢房还没有进入迷宫:
使墙壁成为通道,并将另一侧的单元格标记为迷宫的一部分。
将单元格的相邻墙添加到墙列表中。
如果对面的牢房已经在迷宫中,则将墙从列表中删除。
正如我所强调的那样,我的问题是与此相反的 部分。这是否意味着我们墙列表中的任何相邻单元格?还是有别的意思?
我已经用相邻的单元格尝试过它,它最终只是把自己挡住了。
任何想法,将不胜感激。
如果我能让它工作,我会在完成后发布代码。正如我所说,在获得完整解决方案的帮助之前,我想自己走得更远。
java - Java 正则表达式帮助
该检查仍然失败。我把条件分开了,这样我就可以测试它们了。对于 cs = "WWWW", "WXW", "WWWWWWWWRWWWWWW" 它失败了