как перетащить функцию на экран после события нажатия клавиши (pygame) - PullRequest
3 голосов
/ 14 января 2020

Я пытаюсь переключить свой экран с начального экрана на экран инструкций нажатием пробела. Однако, когда вы нажимаете клавишу пробела, экран инструкций остается включенным только при нажатии на него

    for event in pygame.event.get():
    intro_screen()
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            instructions()
            pygame.display.flip()

Как я могу исправить это на последний раз на экране? также возможно ли использовать одну и ту же клавишу для отображения различных функций?

Я новичок в пигмеях ie:)

1 Ответ

2 голосов
/ 14 января 2020

Код должен поддерживать состояние дисплея. В настоящее время основной l oop кажется всегда рисует «Экран вступления», и, как вы говорите, рисует только «Экран инструкций» на пробел-событие. Кроме того, это вставляется в код обработчика событий, вероятно, он должен быть за пределами этой части.

for event in pygame.event.get():
    intro_screen()                               # <-- Draw intro
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_SPACE:
            instructions()                       # <-- Draw Instructions
        pygame.display.flip()

Лучше сохранить, какой экран отображать в переменной.

current_screen = 'introduction'              # enumerated type would be better
done = False

# main loop
while not done:
    # handle events
    for event in pygame.event.get():
        if ( event.type == pygame.QUIT ):
            done = True
        elif ( event.type == pygame.KEYDOWN ):
            if ( event.key == pygame.K_SPACE ):
                current_screen = 'instructions'    # switch screens
            elif ( event.key == pygame.K_BACKSPACE ):
                current_screen = 'introduction'    # switch screens back

    # paint the screen
    if ( current_screen = 'introduction' ):
        intro_screen()                             # draw the introduction screen
    elif ( current_screen = 'instructions' ):
        instructions()                             # draw the instructions
    else:
        # TODO - more screen types
        pass

    pygame.display.flip()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...