Один из моих экранов pygame запускается 2 раза, когда я импортирую функцию, которая возвращает 2 переменные из другого файла. - PullRequest
0 голосов
/ 28 мая 2020

У меня есть проект pygame, который я разделил на 3 разных экрана: начальный экран, экран игры и экран повторного воспроизведения. На экране игры я хочу вернуть состояние игры, а также рейтинг, чтобы я мог показать его на экране воспроизведения снова. Но мой игровой экран запускается дважды, прежде чем перейти к экрану воспроизведения снова.

# Game Loop

state = INIT
while state != DONE:
    if state == INIT:
        state, highscore = init_screen(screen)
    elif state == PLAYING:
        state, highscore = game_screen(screen)
    elif state == PLAYAGAIN:
        state = play_again(screen)
    else:
        state = DONE
# What game screen returns

return state, highscore
#What I'm using in the play again screen to get the highscore from the game screen

highscore = game_screen(screen)[1]
hits = pygame.sprite.spritecollide(player, world_sprites, True, pygame.sprite.collide_mask)

        if len(hits) > 0:
            if score > highscore:
                highscore = score
            state = PLAYAGAIN

Этот последний код должен сделать игровой экран go на экране воспроизведения снова который работал до того, как я решил поставить рекорды.

Кстати, где я должен поместить первое значение для рекорда (highscore = 0)?

1 Ответ

0 голосов
/ 28 мая 2020

Вы вызываете функцию game_screen () во время своей функции play_again (). Это запускает функцию game_screen (), которая объясняет, почему вы видите, что игра запускается дважды. Я бы предложил сохранить ваш рекорд в глобальной переменной, а затем использовать это в вашей функции play_again (), а не получать if из вашей функции game_screen ():

state, highscore = INIT, 0
while state != DONE:
    ...

Затем в вашей функции play_again () избавьтесь строки, которая говорит:

highscore = game_screen()[1]

И вместо этого просто скажите:

global highscore
...