繁体   English   中英

如何在keydown事件(pygame)之后blit一个函数来筛选

[英]how to blit a function to screen after keydown event (pygame)

我试图通过按空格键使我的屏幕从介绍屏幕切换到说明屏幕。 但是,当您按下空格键时,说明屏幕只会在您按下时保持亮起

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

我该如何解决这个问题才能在屏幕上持续显示? 另外,我可以使用相同的键来显示不同的功能吗?

我是一个pygame新手:)

代码需要维护显示的状态。 目前,主循环似乎总是绘制“介绍屏幕”,并且如您所说,仅在空格键事件上绘制“说明屏幕”。 这也被放入事件处理程序代码中,它可能应该在该部分之外。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM