[英]pygame key detect not detecting keypresses
我试图让 pygame 检测我的按键并将背景更改为随机颜色,但每次按下所选键时,没有任何变化。 window 的背景颜色保持不变。
import pygame
import random
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
detect=True
keys=pygame.key.get_pressed()
while detect:
pygame.event.pump()
keys = pygame.key.get_pressed()
if keys[pygame.K_0]:
screen.fill((random.randint(0, 255)), (random.randint(0, 255)), (random.randint(0, 255)))
pygame.display.update()
if keys[pygame.K_1]:
screen.fill((random.randint(0, 255)), (random.randint(0, 255)), (random.randint(0, 255)))
pygame.display.update()
这里的问题是程序永远不会到达代码的后半部分。
第一个while True
语句,它对屏幕没有任何作用,但等待用户关闭 window 一直运行 - 应该检测按键的代码仅在接收到pygame.QUIT
事件时执行(然后是 Z025B8C74DEZCBD902FFFB4C1A352702FBFFBsclose )。
程序的工作方式,它们运行一个循环,其中包含所有语句 - while
循环不会并行运行 - 你必须这样做:
import pygame
import random
running = True
screen = pygame.display.set_mode((800, 600))
while running:
pygame.event.pump()
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
keys = pygame.key.get_pressed()
if keys[pygame.K_0]:
screen.fill((random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
pygame.display.update()
if keys[pygame.K_1]:
screen.fill((random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)))
pygame.display.update()
pygame.time.delay(30)
pygame.quit()
(还要注意对“pygame.time.delay”的调用,否则 while 循环将使用所有 CPU 资源运行,试图以比它们到达的速度更快的速度获取事件,并且对此无能为力 - 您的简单示例将以 100% 的速度烧毁中央处理器)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.