我做了两个函数,用来检查事件
def get_pygame_events():
pygame_events = pygame.event.get()
return pygame_events
和
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")
(那个while
循环只是我所做工作的总结)
如果我按住W,"w“就会一遍又一遍地打印出来。相反,当我尝试时,它打印了W一次,除非我再按一次,否则就会发生这种情况。
我如何通过按住W(或any)键来实现这一点,它识别正在发生的事件,并(在本例中)在每次执行while
循环时打印"w“?
发布于 2014-08-26 16:16:59
使用pygame.KEYDOWN
和pygame.KEYUP
检测按键是否被物理按下或释放。您可以通过在按住一个键时使用pygame.key.set_repeat
生成多个pygame.KEYDOWN
事件来激活键盘重复,但这并不是一个好主意。
相反,您可以使用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")
发布于 2015-01-22 20:38:55
event.key == chr('a')
event.key返回密钥的ascii
https://stackoverflow.com/questions/25494726
复制相似问题