您的代码robsHouse.pressed
在按住键时切换每一帧的原因是因为在按住键时key[pygame.K_z]
每次循环迭代都会满足条件,然后次要条件将在交替帧上相互满足。
在不改变检索关键数据的方式的情况下,您可以执行以下操作:
if key[pygame.K_z]:
robsHouse.pressed = True
else:
robsHouse.pressed = False
另一种方法是从 pygame 的事件模块中查找KEYUP
和事件,而不是从关键模块中获取关键数据。KEYDOWN
可以这样做:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_z:
robsHouse.pressed = True
elif event.type == pygame.KEYUP:
if event.key == pygame.K_z:
robsHouse.pressed = False
就个人而言,在大多数情况下,我更喜欢第二种方法。无论如何,您都需要处理来自 pygame 事件模块的事件,否则队列将填满,您的程序将变得无响应(这在 pygame 事件模块文档中有所提及)。