首页 > 解决方案 > 当我按下 T 键时 Pygame 没有响应

问题描述

我正在制作一个程序,该程序应该在T按下键时打印“旅行”。但是当我按 时T,什么都没有打印出来,不像它应该的那样。

我的检测代码:

        elif keep_doing_current_event and event.type == draw_intro_text_line_1_event:
            typewrite("今天是2121年5月22日。一百年前的今天,天问一号任务火星车“祝融号”")

            text = font.render("(按空格键继续)", True, (255, 255, 255))
            screen.blit(text, (550, 500))

            key = pygame.key.get_pressed()

            if key[K_SPACE]:
                screen.fill((0, 0, 0))
                keep_doing_current_event = False
                screen.blit(city_bg, (0, 0))

                if key[K_t]:
                    print("travel")

我有两个问题:

  1. 代码可以进入if key[K_t]声明吗?
  2. 如果是这样,keep_doing_current_event = False是造成它的线路吗?

(附加信息:首先,一些文本被打印出来。然后,当按下空格键时,背景切换到火星城市背景。最后,当T按下键时,程序应该打印travel

标签: python-3.xpygame

解决方案


您需要按下spacet立即打印“旅行”的代码。

您需要在应用程序循环中绘制背景。使用KEYDOWN事件来改变keep_doing_current_event. 根据以下内容绘制场景keep_doing_current_event

current_background = .... # what ever

# application loop
while True:

    # event loop
    for event in pygame.event.get():

        if event.type == pygame.KEYDOWN:
            if event.key == K_SPACE:
                keep_doing_current_event = False            
    
    if keep_doing_current_event:
    
        # draw keep_doing_current_event scene
  
        # [...]
        
        typewrite("今天是2121年5月22日。一百年前的今天,天问一号任务火星车“祝融号”")
        text = font.render("(按空格键继续)", True, (255, 255, 255))
        screen.blit(text, (550, 500))
        
        # [...]
 
    else:
 
       # draw game scene
       screen.blit(city_bg, (0, 0))
         
       key = pygame.key.get_pressed()
       if key[K_t]:
           print("travel")

推荐阅读