如何使用KEYDOWN?

我试图在按下转义键时退出程序。我在这样做时遇到了一些麻烦。

当我取出 door() 线时,它起作用了;

while True:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            print("key pressed")
            if event.key == pygame.K_ESCAPE:
                print("key pressed")
                pygame.quit()
                sys.exit()
    #door()

这是命令提示符读数

C:UsersMeDocumentsFan game>python testing_file.py
pygame 2.0.1 (SDL 2.0.14, Python 3.9.5)
Hello from the pygame community. https://www.pygame.org/contribute.html
key pressed
key pressed

C:UsersMeDocumentsFan game>

但是一旦我重新添加该行,它就会停止工作。

我的门功能;

def door():
    
    global var_door
    
    image_door_1 = pygame.image.load(r'texturesdoorframe_1.png')
    image_door_2 = pygame.image.load(r'texturesdoorframe_2.png')
    image_door_3 = pygame.image.load(r'texturesdoorframe_3.png')
    image_door_4 = pygame.image.load(r'texturesdoorframe_4.png')
    image_door_5 = pygame.image.load(r'texturesdoorframe_5.png')
    image_door_6 = pygame.image.load(r'texturesdoorframe_6.png')
    
    image_door_1_size = image_door_1.get_rect().size
    image_door_2_size = image_door_2.get_rect().size
    image_door_3_size = image_door_3.get_rect().size
    image_door_4_size = image_door_4.get_rect().size
    image_door_5_size = image_door_5.get_rect().size
    image_door_6_size = image_door_6.get_rect().size
    
    centered_image_door_1 = [(display_size[0] - image_door_1_size[0])/2, (display_size[1] - image_door_1_size[1])/2]
    centered_image_door_2 = [(display_size[0] - image_door_2_size[0])/2, (display_size[1] - image_door_2_size[1])/2]
    centered_image_door_3 = [(display_size[0] - image_door_3_size[0])/2, (display_size[1] - image_door_3_size[1])/2]
    centered_image_door_4 = [(display_size[0] - image_door_4_size[0])/2, (display_size[1] - image_door_4_size[1])/2]
    centered_image_door_5 = [(display_size[0] - image_door_5_size[0])/2, (display_size[1] - image_door_5_size[1])/2]
    centered_image_door_6 = [(display_size[0] - image_door_6_size[0])/2, (display_size[1] - image_door_6_size[1])/2]
    
    mouse_down = False
    
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
        elif event.type == MOUSEBUTTONDOWN:
            mouse_down = True
    
    x, y = pygame.mouse.get_pos()
    if 0 < x < 253 and 0 < y < 226:
        if mouse_down:
            if var_door == 0:
                screen.blit(image_door_1, centered_image_door_1)
                pygame.display.update()
                time.sleep(0.01)
                    
                screen.blit(image_door_2, centered_image_door_2)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_3, centered_image_door_3)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_4, centered_image_door_4)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_5, centered_image_door_5)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_6, centered_image_door_6)
                pygame.display.update()
                        
                var_door = 1
                    
            else:
                screen.blit(image_door_6, centered_image_door_6)
                pygame.display.update()
                time.sleep(0.01)
                    
                screen.blit(image_door_5, centered_image_door_5)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_4, centered_image_door_4)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_3, centered_image_door_3)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_2, centered_image_door_2)
                pygame.display.update()
                time.sleep(0.01)

                screen.blit(image_door_1, centered_image_door_1)
                pygame.display.update()
                        
                var_door = 0

我不明白为什么它不起作用。我尝试重新排列 while 循环检查的顺序,但即使这样也不起作用。我的猜测是出于某种原因,它从不检查是否按下了退出键并卡在了门功能上,但门功能中没有任何循环。

以上是如何使用KEYDOWN?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>