我有15个不同的房间,如下图所示,我正在尝试制作一个游戏,其中的楼层是以满足两个条件的方式从这些房间随机生成的:
答案 0 :(得分:0)
一旦你预先计算了你的桌子,一种简单快速的方法:
如图所示,您只有一组有限的可能房间。 每个房间有四个侧面。 在每一侧,您可以预先确定哪些房间可以作为邻居接受并将其存储在桌子中。 所以每个房间有四张可能的neigbors表。
'''
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,....
]
从该组中选择一个随机组。 第一个房间没有任何限制。 通过这种方式,您可以建立自己的建筑物。逐个房间。
你防止'#34;空" (我猜你的意思是不存在的)房间通过每行系统地工作,然后在2D网格上每列工作。
要在Python 3.3中实现这一点,您需要一个图形库。 如果你想保持简单,Python附带的turtle模块可以轻松处理这个问题。
首先使用文档或互联网中的示例熟悉海龟模块。
然后尝试编写我刚刚绘制的内容。
请注意,如果您不希望任何门通向建筑物,那么这只是一个额外的限制因素。如果您的建筑物在每个外墙上都是正方形,则只允许使用某些房间。再次在外墙上使用一张桌子。
如果它只是你之后的图形,如果每个房间只有一个左墙和一个顶墙(两者都可以包含一扇门),你可以轻松搞定。任何房间都可以作为任何其他房间的邻居。只有最下面和最右边的房间才会有(封闭的)右下墙。
但是既然你正在写游戏,那么你的房间可能需要四面墙才能在游戏逻辑方面自成一体。