当我的玩家到达地图的尽头时,我希望它进入下一个级别。我已经创建了第一级,并且一切正常。我要做的是,当玩家完成第1级时,我想加载另一张可以在其上前进的地图。但是我不知道该怎么做。这是我的代码片段
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(游戏类)
是否需要像为第一级创建另一个类一样为第二级创建另一个类?
答案 0 :(得分:1)
首先,一些与您的具体问题无关的建议: 不要使用敌人= ...,敌人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()