レベルが互いに接続されている pygame でプラットフォーマーを作成しています。(1 つのレベルは 1 つの画面であり、画面から離れると次のレベルに移動します)。
私は現在、オフスクリーンを歩いた後にファイルから接続されたレベルをロードすることを持っていますが、これは明らかに遅いので、すべてのレベルをプリロードしたいと思います。これを行うには、ルート レベルを 1 つ取得し、それが接続されているすべてのレベルを取得し、それらの各レベルが接続されているすべてのレベルを取得し、すべてのレベルを取得するまで繰り返します。
そのためにこのコードを書きましたが、機能しません。疲れた時に書きました。誰でもこれで私を助けることができますか?必要に応じて追加の質問にお答えします。
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