在python3.3中,如何使用某些房间片段随机生成地板?

2024-04-20 01:38:22 发布

您现在位置:Python中文网/ 问答频道 /正文

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

  1. 从一个任意的房间开始,你可以走到任何其他任意的房间。(表现为希望不会发生:正确的一个)
  2. 整个楼层都是封闭的,你找不到从任何房间出去的路。(表现为希望不会发生:左一)

enter image description here


Tags: 游戏条件房间楼层
1条回答
网友
1楼 · 发布于 2024-04-20 01:38:22

一种方法,简单快速,一旦您预先计算了您的表:

如您的图纸所示,您只有有限的一组可能的房间。 每个房间有四个侧面。 在每一边你都可以预先确定哪些房间可以作为邻居,然后把它们放在一张桌子上。 所以每个房间有四张可能的邻居的桌子。你知道吗

'''
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模块可以轻松地处理这个问题。你知道吗

首先使用文档或互联网上的示例熟悉海龟模块。你知道吗

然后试着对我刚才画的东西进行编程。你知道吗

请注意,如果您不希望有任何门通向建筑,这只是一个额外的约束。如果你的建筑在每面外墙上都是正方形的,那么只有特定的房间是允许的。每面外墙都要用一张桌子。你知道吗

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

但是既然你在写一个游戏,你的房间可能需要四面墙,以使游戏逻辑独立。你知道吗

相关问题 更多 >