python - 如何让玩家在pygame中进入下一个级别
问题描述
当我的玩家到达地图的尽头时,我希望它进入下一个级别。我已经创建了第一级,一切正常。我想要做的是,当玩家完成第一级时,我想加载另一张可以向前移动的地图。但我不明白该怎么做。这是我的一段代码
def runGame(theGame):
theGame.clock.tick(FPS)
# This function consists code for Events
theGame.events()
# This function consists code from enemy hit events
theGame.hit_or_not()
# This function consists code for player movements
theGame.movements()
# This function consists code for drawing the sprites over the screen
theGame.redrawGameWindow()
def readyGame(run, gameOver):
game = Game()
while run:
runGame(game)
keys = pygame.key.get_pressed()
if keys[pygame.K_x]:
game = Game()
elif keys[pygame.K_ESCAPE]:
run = False
pygame.event.pump()
if gameOver:
runGame(game)
readyGame(True, False)
这是我的第一级代码:https ://pastebin.com/yRb8T6ku (游戏类)
我是否必须像第一级一样为第二级创建另一个课程?
解决方案
首先,一些与您的具体问题无关的建议:不要使用敌人 = ...,敌人2 = ...,敌人3 = ...等等。使用列表
self.enemies = [
enemy(),
enemy(),
enemy()
]
平台和硬币的方式相同,当您可以将大多数方法更改为循环时:
def hit_or_not(self):
# Checking Collision of Enemy and Hero
for enemy in self.enemies:
self.enemyCollide(self.hero, enemy)
那么,我们来看看什么是水平。我认为是英雄、敌人、平台和硬币,所以声明
LEVELS = [
{ # level1
'enemies': [
enemy(...), # move here from your Game.__init__
enemy(...),
....
],
'platforms': [
Platform(...),
...
]
'coins': [
Coins(...),
...
'hero': thePlayer(...)
]
}
{ # level2
...
}
...
]
然后你可以切换到这样的水平:
# in the Game class
def switchLevel(self, levelno):
self.hero = LEVELS[levelno]['hero']
self.enemies = LEVELS[levelno]['enemies']
self.platforms = LEVELS[levelno]['platforms']
self.coins = LEVELS[levelno]['coins']
因此,当您决定切换级别时,请执行
game.switchLevel(...)
game.redrawGameWindow()