Как добавить экран? - PullRequest
       12

Как добавить экран?

1 голос
/ 14 июня 2019

Я пробовал разные коды здесь и в других местах, но мне просто не удается заставить работать мой конечный экран.

Я много раз пытался перейти на конечный экран, но либо код полностью не удалсяили мои спрайты появляются в верхней части экрана.Это то, что у меня есть сейчас, потому что это позволяет моему коду запускаться.

collide = pygame.sprite.spritecollide(player, enemy_list, False)
    if collide:
        run = False

Я хочу, чтобы он закончился, когда вражеский спрайт касается спрайта игрока, но из-за кодов выше, которые делают вражеский спрайтследуйте за спрайтом игрока, всегда появляется ошибка: "float Division 0".Возможно, я виноват в том, что использовал неправильный код.

Я не уверен, влияют ли другие коды на коды конечного экрана, но на всякий случай, это весь мой код:

Code is removed for now. Will re-upload in 1 to 2 months

1 Ответ

2 голосов
/ 14 июня 2019

Добавить состояние 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

    # [...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...