Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python 3.3中,如何使用某些房间片段创建随机生成的地板?_Python_Algorithm_Random - Fatal编程技术网

在python 3.3中,如何使用某些房间片段创建随机生成的地板?

在python 3.3中,如何使用某些房间片段创建随机生成的地板?,python,algorithm,random,Python,Algorithm,Random,如下图所示,我有15个不同外观的房间,我正在尝试制作一个游戏,其中楼层是从这些房间随机生成的,满足两个条件: 从任意房间开始,您可以步行到任意其他房间。通过希望不发生来证明:正确的一个 整个楼层都是封闭的,你找不到从任何房间出去的路。通过希望不发生来证明:左一 一旦您预先计算了表格,单向、简单且快速: 如图所示,您只有一组有限的可能房间。 每个房间有四个面。 在每一侧,您可以预先确定哪些房间可以作为邻居,并将其存储在桌子上。 所以每个房间有四张邻居的桌子 ''' Each room has 4

如下图所示,我有15个不同外观的房间,我正在尝试制作一个游戏,其中楼层是从这些房间随机生成的,满足两个条件:

从任意房间开始,您可以步行到任意其他房间。通过希望不发生来证明:正确的一个 整个楼层都是封闭的,你找不到从任何房间出去的路。通过希望不发生来证明:左一
一旦您预先计算了表格,单向、简单且快速:

如图所示,您只有一组有限的可能房间。 每个房间有四个面。 在每一侧,您可以预先确定哪些房间可以作为邻居,并将其存储在桌子上。 所以每个房间有四张邻居的桌子

'''
Each room has 4 sides: top, left, bottom, right. False means no door in that side, True means there's a door in that side.
iTop .. iRight are the indices of the sides.
The lists with numbers contain the indices of rooms that could be adjacent to a given room on that particular side.
So e.g rooms [0] can have rooms [0], rooms [3], rooms [5] and rooms [9] on its iTop side.
Note: I just use random indices in the example.
'''

iTop, iLeft, iBottom, iRight = range (4)

rooms = [
    [(False, [0, 3, 5, ...]), False, [0, 4, 7, ...], False, [0, 6, 11, ...], False, [0, 2, 7, ...]],
    [(True, [2, 7,....
]
从该集合中随机选择一个。 第一个房间没有任何约束。 这样,你就可以让你的“建筑”一间一间地成长

通过在二维网格上按行、按列系统地工作,可以防止空房间,我猜这是指不存在的房间

要在Python3.3中实现这一点,您需要一个图形库。 如果希望保持简单,Python附带的turtle模块可以轻松地处理这个问题

首先,使用文档或互联网上的示例熟悉海龟模块

然后试着对我刚才画的东西进行编程

请注意,如果您不希望任何门通向建筑,这只是一个额外的约束。如果您的建筑在每面外墙上呈正方形,则只允许使用某些房间。再次在每面外墙上使用一张桌子

如果你想要的只是图形,那么如果每个房间都只有一个左墙和一个顶墙,而这两个墙都可以装一扇门,你就可以过得轻松得多。任何房间都可以作为其他房间的邻居。只有最下面和最右边的房间才有封闭的右墙和底墙


但是既然你在写一个游戏,你的房间可能需要四面墙才能独立于游戏逻辑。

你能再解释一下吗?@MaskedMan你听说过一种叫做“绑定艾萨克”的游戏吗?如果你有,那就相当简单了。我正在尝试创建相同类型的随机地板机械师。我真的不知道你还想知道什么,但是如果你还没听说过这个游戏,我可以试试。@MaskedMan好的,谢谢你编辑它。现在更容易理解了:。我从来都不擅长用简单的方式解释事情……我很高兴我的编辑让你感到高兴:在你想要的楼层,每个房间都有通往任何相邻房间的门吗?我真的很感激你的回答,我会尽量按照你建议的方式来做。但是我使用的图形引擎/库是pygame,我想我应该提到它。但是有没有一种方法可以让你做一个表格部分的小例子,因为我从来没有在编程中使用过表格,这会有很大的帮助。当然,我也会看到一些关于使用表格的文档。参见添加的示例代码非常感谢!