问题标签 [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中8x8网格上的广度优先搜索
我要做的是计算使用最短路径到达目标所需的移动次数。必须使用广度优先搜索来完成。我将 8x8 网格放入一个 2d 数组中,该数组用四个字符之一填充,E 表示空(可以移动到这些位置),B 表示阻塞(不能在此处移动),R 表示机器人(起点)或 G为目标。该算法必须按向上、向左、向右、向下的顺序检查可移动空间,我相信我做得对。检查节点后,它将其内容更改为“B”。如果无法达到目标,则应返回 0。
我已经更改了我的代码以实现 Kshitij 告诉我的内容,并且效果很好。我太累了,看不到在每个新数据集后我都没有初始化队列,哈哈。谢谢您的帮助!
java - 枚举类型 2Darray 迷宫
我正在制作一个带有枚举类型的迷宫游戏来保存墙壁、开放空间(等)的值,但我不确定为什么这段代码不起作用,我正在尝试创建一个新板并将所有内容设置为打开,然后通过并随机为数组中的点设置值。
algorithm - 生成塔防迷宫(墙有限的最长迷宫)——接近最优的启发式?
在塔防游戏中,您有一个 NxM 网格,其中包含开始、结束和许多墙。
敌人在不穿过任何墙壁的情况下从头到尾采用最短路径(它们通常不受网格的限制,但为了简单起见,假设它们是。在任何一种情况下,它们都不能穿过对角线“洞”)
问题(至少对于这个问题)是放置多达K 个额外的墙,以最大化敌人必须走的路径。例如,对于 K=14
我的直觉告诉我,如果(正如我希望的那样)我们将其概括为包括在移动到终点之前必须访问的航点,并且可能也没有航点,那么这个问题是 NP 难的。
但是,对于接近最优的解决方案,是否有任何体面的启发式方法?
[编辑]我在这里发布了一个相关的问题。
java - Android/Java - 放大我绘制的画布
我创建了一个 2D 迷宫,它由 2 组布尔数组组成,指的是我的迷宫的垂直和水平墙。这个迷宫目前是 12 x 12,但我只想显示 5 x 5。
有没有办法将迷宫缩放到用户所在位置的 5 x 5 圆周,然后在每次移动时简单地显示下一个块,因此只显示 5 x 5。
理想情况下,我想坚持把整个东西画出来,然后简单地进行某种鸟瞰视图缩放(这将提高可用性并通常加快应用程序的速度)。
编辑 下面是我目前用来绘制迷宫的代码。但是,当我移动用户圈时,下面的代码似乎没有绘制正确的 v 和 hLines。
注意 - mazeSizeX 和 Y 最初设置为 5。任何关于我哪里出错的进一步指导将不胜感激。
编辑 2:请参阅下图以指示用户可能已采取的 3 个不同步骤来帮助进一步解释我遇到的问题。第一个图像是起点,并且已经按原样绘制,但是当我开始移动用户圆圈时,线条周围的绘制不正确。
最后,请看下面我用来绘制位智墙的当前布尔数组:
提前致谢
algorithm - 我如何保证元胞自动机生成的迷宫是可解的/有趣的?
我正在写一个迷宫生成算法,这篇维基百科文章引起了我的注意。我决定用java实现它,这很容易。我遇到的问题是,虽然生成了类似迷宫的图片,但迷宫通常是不可解决的,而且通常并不有趣。我所说的有趣是指有大量无法到达的地方,而且通常有很多解决方案。
我实施了 1234/3 规则(虽然它很容易改变,请参阅注释以获得解释),一开始的分布大约为 50/50。迷宫总是达到平衡,其中 t 步之间没有变化。
我的问题是,有没有办法从固定的起点和终点保证迷宫的可解性?此外,有没有办法让迷宫更有趣地解决(更少/一个解决方案和很少/没有无法到达的地方)?如果细胞自动机无法做到这一点,请告诉我。谢谢你。
c++ - 陷入无限递归
我有这个函数来解决 C++ 中的迷宫,但是当我运行程序时,我在递归中得到了错误的访问错误。我认为 in 可能是一个无限循环。我不知道哪里出了问题。
graph - 如何将迷宫转换为图表?
我正在尝试将迷宫数据结构转换为图形。迷宫就像一个网格,细胞之间有一些墙壁。
我想把这个迷宫转换成图表我该怎么做?
c++ - 在递归迷宫求解器中保存路径坐标?
我有一个递归迷宫求解器算法,可以成功地通过迷宫。唯一的问题是我找不到保存起点和终点之间最短路径的方法。如何保存最短路径的坐标?
这是递归函数
添加一个向量来存储坐标后,我得到了这个输出
它存储了所有坐标,但它甚至存储了我们不想走的路径的坐标((7,2)(8,2)(9,2),然后返回(7,3))。有没有办法可以只存储最短路径?
c++ - C++“迷宫”作业
小程序应该打印出通过迷宫的所有可能路线,其中入口/起点总是从左上角向下一个,所有可能的出口总是在右墙上。它从文本文件中检索迷宫。
迷宫实际上只是一堆文字。迷宫由一个 nxn 网格组成,该网格由作为墙壁的“#”符号和代表可步行区域/路径的各种字母 [a...z] 组成。字母可以重复,但永远不能并排。
迷宫是 15x15。
大写的 S 始终标记入口,位于第二高点的左墙上。一条可能的路径只能通过字母 - 你不能在 # 符号上行走。右边墙上的任何字母都代表出口。
例如,
是一个可能的迷宫。我的小程序应该在读取实际包含迷宫的文本文件后打印出所有可能的路线。
对该程序的调用将在屏幕上生成以下输出:
我会怎么做?我不需要完整的代码答案,我只需要一些有关如何解决此问题的指导。
到目前为止,除了递归检查相邻方块以查看您是否可以在它们上行走的实际算法本身之外,我已经完成了所有工作,而且我不知道如何在多条路径上工作。
这是我到目前为止所拥有的(我知道我的路径检查是错误的,但我不知道还能做什么):
谢谢!
c++ - 通过文本迷宫打印到屏幕路径的算法
对于我的C++作业,我基本上是在尝试vec
从左侧第二个顶部字符开始搜索文本文件(流式传输到我的 vector )中的一大块文本。这是一个文本迷宫,我的程序最终应该打印出穿过它的路径的字符。
迷宫的一个例子是:
其中“#”是一堵无法行走的墙,您总是从左侧第二个顶部字符开始。字母字符代表可步行的方块。出口总是在右边。在 maze.text 文件中,迷宫始终为 15x15 大小。字母字符在同一个迷宫中重复,但不直接相邻。
我在这里要做的是:如果当前方块旁边的方块有字母字符,则将其添加到 vectorvec
中,然后重复此过程,直到走到迷宫的尽头。最终,我应该通过将某些迷宫中存在的多条路径打印到屏幕上来使这变得更加复杂。
到目前为止,我有这个算法本身,我知道这是错误的:
visited
是我跟踪访问过的方块的向量。
我将如何更新它以使其真正起作用,并最终使我可以管理多个路径(即,如果有 2 个路径,程序将同时打印到屏幕上)?我记得有人告诉我可能需要另一个向量/数组来跟踪我已经访问/检查过的正方形,但是我将如何在这里实现呢?