Algorithm 二维tilemap中随机路径的生成算法

Algorithm 二维tilemap中随机路径的生成算法,algorithm,path,2d,tiles,procedural,Algorithm,Path,2d,Tiles,Procedural,我需要在2D平铺贴图中生成一个简单的随机路径。输入参数是一系列步骤。条件是每个瓷砖在路径上只有两个相邻的瓷砖,因此没有房间,也没有十字路口 我在网上寻找解决方案,但没有找到类似的解决方案。酒鬼算法制造房间,其他一切都是迷宫生成算法。也许我没有用合适的关键字搜索 重要的是随机性,因为我每次都需要完全不同的路径 编辑:添加示例图像 示例路径: 其主要特点是每个磁贴只有两个邻居 改进后的版本将使用特定的目标平铺作为路径的终点以及最小和最大步数,但现在这并不重要 谢谢你的建议。将其分解为子部分,你唯一需

我需要在2D平铺贴图中生成一个简单的随机路径。输入参数是一系列步骤。条件是每个瓷砖在路径上只有两个相邻的瓷砖,因此没有房间,也没有十字路口

我在网上寻找解决方案,但没有找到类似的解决方案。酒鬼算法制造房间,其他一切都是迷宫生成算法。也许我没有用合适的关键字搜索

重要的是随机性,因为我每次都需要完全不同的路径

编辑:添加示例图像

示例路径:

其主要特点是每个磁贴只有两个邻居

改进后的版本将使用特定的目标平铺作为路径的终点以及最小和最大步数,但现在这并不重要


谢谢你的建议。

将其分解为子部分,你唯一需要做的随机决定是是否在路径上的给定点向左/向右/向上/向下移动,而不形成交叉点,这可以使用机器的时间戳任意生成,例如,检查最后一个数字是偶数还是奇数,然后向左表示偶数,向右表示奇数,向上表示模4等,这样每次都会给出一个相当随机的路径

尝试以相对较快的速度降低计算速度,以跨越这段时间,引入更多的随机性

或者,在2D映射上执行类似DFS的遍历,并将每个唯一路径存储在哈希映射或集合中,并将唯一编号作为密钥添加到此映射,这是预处理部分,现在从一组所有可能的解决方案中随机选取唯一密钥,如果需要另一个随机唯一路径,请将其从集合中移除,只需从剩余的可用路径中再随机选择一条即可

创建二维地图

因此,创建地图大小的2D数组,并通过例如0清除它

添加N个随机障碍物

例如,地图中的填充圆

使用*查找最短路径

你可以用我的

如果你想要更复杂的东西,那么你可以创建随机地形,并使用*来寻找最短路径,而上升的成本要高于下降的成本。。。。要创建随机地形,可以使用:


也可用于随机地图生成…

我正在为类似盗贼的地下城爬虫创建一个随机地图生成器,我的入口到出口路径方法如下:

1. Randomly select a tile as the dungeon entrance. Add it to the path and set it as currentTile
2. Randomly pick a neighboring tile of currentTile that's not already in the path. Add it to the path and set it as currentTile.
3. Repeat step 2 until your path reaches the desired length. If a deadlock occurs, restart from 1.

在您的情况下,您应该稍微更改步骤2:您应该检查相邻磁贴本身及其除currentTile之外的所有相邻磁贴,当然,它们不在路径中。这可能会导致您的算法更多次陷入死锁,但对于像图片中的路径那样小的路径,重复几次并不成问题。

为什么不添加一些地图示例,让我们看看您在处理什么…添加简单方法的答案…哦,太酷了,障碍可以解决问题。。。非常感谢。改进的想法-创建一个迷宫,使用*解决它,使用路径