存储具有不规则间距的3D迷宫的点?

时间:2016-01-17 20:54:29

标签: python data-structures maze

前段时间我使用深度优先搜索方法在Python中创建了一个抽象的3D迷宫,我将每个fork存储在字典中作为点列表,并使用单独的字典来存储每个fork来自哪个fork。这很有用(可以看到here跟随原点的最后一点之后),但它看起来有点混乱,并且试图让寻路工作变得有点太hacky。

如果你在迷宫生成部分看{4},看起来它只是一个点网格,并且在每个点之间可以有连接或墙。我可能错了,它可能只是不同大小的立方体,将每一个第二个视为墙/连接器,但我很想知道在Python中是否有更好的方法。将它存储在预先构建的3D网格中是不可能的,因为我不希望它受边界的限制(您可以轻松生成数千个点),并且随着生成的进行加上尺寸变化,因为它当它变小时,对于大规模的几代人看起来更酷。

我知道这个问题可能不适合SO,但我只找到了关于生成迷宫的提示,而不是在搜索时存储它们,所以认为它可能值得问。

1 个答案:

答案 0 :(得分:1)

我不知道我是否理解你的问题,或者这是否有助于迷宫的可视化,但是如果你想在遍历时存储结构或路径,你可以使用修改后的{{3有一些额外的信息,如颜色,告诉你是否访问过一个节点。链表可以有一个像叉子一样的子列表。每个节点都可以有一个位置,就像您链接的视频中的块一样。

像这样的列表的节点对象的python示例可以是

class node:

  def __init__(self, color, location, parent, children):
    self.nodeColor = color
    self.location = location
    self.parentNode = parent
    self.children = children

其中父项是节点对象,子项是节点对象列表。

在进行深度优先搜索或任何类型的搜索时,可以使用颜色属性。如果您访问节点颜色为黑色,如果节点位于探索地平线上,则颜色为灰色,如果尚未访问某个节点或将其初始化为白色。

希望有所帮助!