Код должен поддерживать состояние дисплея. В настоящее время основной 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()