【发布时间】:2020-06-12 23:10:51
【问题描述】:
尝试在满足某些条件时从我的地图文件夹中选择随机地图,我将如何选择新地图。
MAP = ['map.tmx', 'map2.tmx', 'map3.tmx']
self.map_folder = path.join(game_folder, 'maps')
self.map = TiledMap(path.join(self.map_folder, MAP))
class TiledMap:
def __init__(self, filename):
tm = pytmx.load_pygame(filename, pixelalpha=True)
self.width = tm.width * tm.tilewidth
self.height = tm.height * tm.tileheight
self.tmxdata = tm
def render(self, surface):
ti = self.tmxdata.get_tile_image_by_gid
for layer in self.tmxdata.visible_layers:
if isinstance(layer, pytmx.TiledTileLayer):
for x, y, gid, in layer:
tile = ti(gid)
if tile:
surface.blit(tile, (x * self.tmxdata.tilewidth,
y * self.tmxdata.tileheight))
def make_map(self):
surface = py.Surface((self.width, self.height))
self.render(surface)
return surface
【问题讨论】:
-
map = random.choice(MAP)- 但它需要删除使用过的地图才能在下一个选择()中跳过它。所以也许首先洗牌地图random.shuffle(MAP)然后正常使用for map in MAP:- 它会以随机顺序排列,因为MAP已经有随机顺序的项目。 -
@furas 成功了,谢谢,如果我想始终从同一张地图开始,那最后一件事该怎么办。所以每次都加载同一个地图,如果条件发生然后加载随机地图?
-
您可以使用
MAP[0]和MAP[1:]创建新列表 - 作为第一个元素使用MAP[0]并从随机列表中添加元素MAP[1:] -
非常感谢。
-
我在答案示例代码中添加了仅随机播放 MAP[1:] 并始终保持 MAP[0] 为第一