如何添加端屏?

时间:2019-06-14 04:02:14

标签: python pygame

我在这里和其他地方尝试了不同的代码,但似乎无法使我的最终屏幕正常工作。

我已经尝试了很多次转换到最终屏幕,但是要么代码完全失败,要么我的精灵出现在最终屏幕的顶部。这就是我现在拥有的,因为它允许我的代码运行。

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

1 个答案:

答案 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

    # [...]