我创建了 2 个函数,用于检查事件
def get_pygame_events():
pygame_events = pygame.event.get()
return pygame_events
and
def get_keys_pressed(self):
keys_pressed = get_pygame_events() #pygame.event.get(pygame.KEYDOWN)
# print(keys_pressed)
keys_pressed_list = []
for event in keys_pressed:
if event.type == pygame.KEYDOWN:
if event.key == K_LEFT:
keys_pressed_list.append("left")
if event.key == K_RIGHT:
keys_pressed_list.append("right")
if event.key == K_UP:
keys_pressed_list.append("up")
if event.key == K_DOWN:
keys_pressed_list.append("down")
if event.key == K_a:
keys_pressed_list.append("a")
if event.key == K_d:
keys_pressed_list.append("b")
if event.key == K_w:
keys_pressed_list.append("w")
if event.key == K_s:
keys_pressed_list.append("s")
if event.key == K_SPACE:
keys_pressed_list.append("space")
if event.key == K_q:
keys_pressed_list.append("q")
if event.key == K_e:
keys_pressed_list.append("e")
if event.type == pygame.MOUSEBUTTONDOWN:
keys_pressed_list.append("click")
return (keys_pressed_list, event.pos)
return keys_pressed_list
我期望如果我能做类似的事情:
while True:
Variable1 = get_pygame_events()
Variable2 = get_keys_pressed()
if Variable2 == ["w"]:
print("w")
(That while
循环只是我所做的总结)
然后如果我按住W,“w”就会一遍又一遍地打印。相反,当我尝试时,它打印了一次 W,除非我再次按下,否则就会发生这种情况。
我怎样才能做到这一点,通过按住 W (或任何)键,它可以识别正在发生的事件,并且(在这种情况下)每次通过时都打印“w”while
loop?
Use pygame.KEYDOWN
and pygame.KEYUP
检测某个键是否被物理按下或释放。您可以使用以下命令激活键盘重复pygame.key.set_repeat
生成多个pygame.KEYDOWN
按住某个键时会发生事件,但这并不是一个好主意。
相反,您可以使用pygame.key.get_pressed() http://pygame.org/docs/ref/key.html#pygame.key.get_pressed检查当前是否按住某个键:
while True:
...
pressed = pygame.key.get_pressed()
if pressed[pygame.K_w]:
print("w is pressed")
if pressed[pygame.K_s]:
print("s is pressed")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)