如何使用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 循环检查的顺序,但即使这样也不起作用。我的猜测是出于某种原因,它从不检查是否按下了退出键并卡在了门功能上,但门功能中没有任何循环。