在Pygame中获取键盘输入的方法是否比指定每个键更容易?例如,
if event.key == pygame.K_a:
command = command + "a"
elif event.key == pygame.K_b:
command = command + "b"
elif event.key == pygame.K_c:
command = command + "c"
有没有办法使用函数为我做这个?
答案 0 :(得分:2)
如果每个键都需要完全不同的操作,那么实际上并没有更好的方法。如果多个键导致类似的操作,例如单个函数f
可以将键作为参数,则可以使用in
表达式,如下所示:
if event.key in (pygame.K_a, pygame.K_b, pygame.K_c):
f(event.key)
如果左侧的内容包含在右侧的内容中,in
表达式的评估结果为True
。因此,使用该代码,如果按下的键是',' b'或' c,'将使用键作为参数调用函数f
。
作为一个实际的例子,假设你想要' Esc'或者' q'退出计划的关键。你可以这样做:
if event.key in (pygame.K_ESCAPE, pygame.K_q):
pygame.quit()
上述代码实际上与:
相同if event.key == pygame.K_ESCAPE:
pygame.quit()
elif event.key == pygame.K_q:
pygame.quit()
从评论中,command
是连接到的字符串。如果您要添加按下command
的任何键a-z,您可以这样做:
if event.key in range(pygame.K_a, pygame.K_z + 1):
command += event.unicode