我在这里和其他地方尝试了不同的代码,但似乎无法使我的最终屏幕正常工作。
我已经尝试了很多次转换到最终屏幕,但是要么代码完全失败,要么我的精灵出现在最终屏幕的顶部。这就是我现在拥有的,因为它允许我的代码运行。
collide = pygame.sprite.spritecollide(player, enemy_list, False)
if collide:
run = False
我希望当敌人精灵接触到玩家精灵时结束游戏,但是由于上面的代码使敌人精灵跟随玩家精灵,所以总是出现错误:“浮动除法0”。不过,使用错误代码可能只是我的错。
我不确定其他代码是否会影响最终屏幕代码,但以防万一,这是我的整个代码:
Code is removed for now. Will re-upload in 1 to 2 months
答案 0 :(得分:2)
向程序添加gameover
状态,并在播放器碰撞时设置状态。
为屏幕游戏创建单独的功能。 gameover
函数具有自己的事件循环:
def gameOverScreen():
global run, gameover
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = True
# do event handling which continues the game
# [...]
# if [...]
# gameover = False
# draw the game over screen
# [...]
pygame.display.flip()
clock.tick(100)
根据主循环中gameover
的状态调用此函数。
使用continue
动词可以立即继续主循环。
gameover = False
run = True
while run:
# [...]
if not gameover and time_difference >= 1500:
# [...]
win.fill(white)
win.blit(background.image, background.rect)
if not pygame.mixer.music.get_busy():
pygame.mixer.music.load('bgm.mp3')
pygame.mixer.music.play()
if gameover:
gameOverScreen()
continue # continue main loop
for e in enemy_list:
e.move(player)
collide = pygame.sprite.spritecollide(player, enemy_list, False)
if collide:
gameover = True
# [...]