我正在 pygame 中创建一个平台游戏,其中关卡相互连接。(一个级别是一个屏幕,您可以通过离开屏幕移动到下一个级别)。
我目前有它在离开屏幕后从文件中加载连接的关卡,但这显然很慢,因此我想预加载所有关卡。我想通过获取一个根级别,获取它连接到的所有级别,获取每个级别连接到的所有级别等等,直到我拥有所有级别。
我为此编写了这段代码,但它不起作用。很累的时候写的。谁能帮我这个?如有必要,我会回答任何进一步的问题。
def loadLinkedLevels(level, surface, ignoredIds = []):
levels = {}
for levelId in level.warps.values():
if levelId and levelId not in ignoredIds:
levels[levelId] = LevelBuilder.loadLevel(levelId, surface)
return levels
def getBranchingLevels(levels, p):
newLevels = True # Do-while
while newLevels:
for level in levels.values():
newLevels = loadLinkedLevels(level, p.screen, levels.keys())
levels.update(newLevels)
return levels
def preloadLevels(rootLevel, p):
levels = loadLinkedLevels(rootLevel, p.screen)
newLevels = {}
for level in levels.values():
newLevels.update(loadLinkedLevels(level, p.screen, levels.keys()))
levels.update(newLevels)
levels.update(getBranchingLevels(levels, p))
return levels