gamemode не изменяется (pygame)

Пишу небольшую игру с помощью библиотеки pygame. Есть кусок кода, когда начинаешь игру gamemode с menu меняется на play по нажатию левой кнопки мыши, как и нужно, но вот после, при попытке рестарта, когда gamemode стоит game over, ничего не происходит, хотя вроде бы должно. Подскажите, в чём проблема?

gamemode = "menu"

while run:
    if gamemode == "play":
        for i in pygame.event.get():
            if i.type == pygame.QUIT:
                run = False
            if i.type == pygame.KEYDOWN:
                if i.key == pygame.K_LEFT:
                    x_change = -player_speed
                elif i.key == pygame.K_RIGHT:
                    x_change = +player_speed
            if i.type == pygame.KEYUP:
                if i.key == pygame.K_LEFT or i.key == pygame.K_RIGHT:
                    x_change = 0

            if x + x_change < 0 or x + x_change >= WIDTH:
                x_change = 0

            x += x_change

        bad_flame_y += bad_flame_speed
        if bad_flame_y >= HEIGHT:
            bad_flame_y = 0
            bad_flame_x = random.randrange(0, WIDTH + 1, 100)

        good_flame_y += good_flame_speed
        if good_flame_y >= HEIGHT:
            good_flame_y = 0
            good_flame_x = random.randrange(0, WIDTH + 1, 100)

        window.blit(bg, (0, 0))
        add_player(x, y)
        add_bad_flame(bad_flame_x, bad_flame_y)
        add_good_flame(good_flame_x, good_flame_y)

        player_rect = player.get_rect(midbottom=(x, y))
        bad_flame_rect = flame_bad.get_rect(midbottom=(bad_flame_x, bad_flame_y))
        good_flame_rect = flame_good.get_rect(midbottom=(good_flame_x, good_flame_y))

        if player_rect.colliderect(bad_flame_rect):
            lives -= 1
            bad_flame_y = 0
            bad_flame_x = random.randrange(0, WIDTH + 1, 100)
        elif player_rect.colliderect(good_flame_rect):
            score += 10
            good_flame_y = 0
            good_flame_x = random.randrange(0, WIDTH + 1, 100)

        lives_and_score_text()

        if lives <= 0:
            time.sleep(2)
            gamemode = "game over"

    elif gamemode == "menu":
        for i in pygame.event.get():
            if i.type == pygame.QUIT:
                run = False
            if i.type == pygame.MOUSEBUTTONDOWN:
                if i.button == 1:
                    gamemode = "play"

        window.blit(bg, (0, 0))
        menu_text()

    elif gamemode == "game over":
        for i in pygame.event.get():
            if i.type == pygame.QUIT:
                run = False
            if i.type == pygame.MOUSEBUTTONDOWN:
                if i.button == 1:

                    gamemode = "play"

        window.blit(bg, (0, 0))
        game_over()

    pygame.display.update()
    clock.tick(FPS)

Ответы (1 шт):

Автор решения: Владислав Новосёлов

Ночное время плохо влияет на моё мышление! Ответ оказался очевиден: нужно сбросить количество жизней и набранных очков перед рестартом игры, чтобы lives не равнялось нулю

    elif GameMode == "game over":
        for i in pygame.event.get():
            if i.type == pygame.QUIT:
                run = False
            if i.type == pygame.KEYDOWN:
                if i.key == pygame.K_r:
                    lives = 3
                    score = 0
                    GameMode = "play"
→ Ссылка