我正在使用Pygame和Python制作一个游戏。我希望同时按下两个键来移动一个块。我怎么能这样做?我可以使用单个键移动块..但它不能同时用于两个键。
我希望块移动,我一起按“右键”和“1”
使用单个键
可以有效地移动给定代码 if event.type==KEYDOWN:
if event.key==K_RIGHT:
move_fullcube=left
我尝试使用“和”,但它仍然不起作用
if event.type==KEYDOWN:
if event.key==K_RIGHT and event.key==K_1:
move_fullcube=left
答案 0 :(得分:2)
最简单的方法是使用pygame.key.get_pressed()
。这将返回一个可以使用的键列表,如下例所示。
keys = pygame.key.get_pressed()
if keys[pygame.K_RIGHT] and keys[pygame.K_LEFT]:
move_fullcube = left
请参阅https://www.pygame.org/docs/ref/key.html#pygame.key.get_pressed上的文档。
答案 1 :(得分:0)
在pygame中有两种不同的方法来处理键盘事件。第一种方式是你正在做的事情,你得到每个事件的列表并循环遍历该列表。您的方法存在的问题是,您一次只能查看一个事件,因此event.key
永远不会同时等同于K_RIGHT
和 K_1
因为它只是一把钥匙。两个事件都会发生,但您一次只能查看其中一个事件。如果您想这样做,则必须设置两个变量right_pressed
和one_pressed
。像这样的东西
right_pressed = False
one_pressed = False
for event in pygame.event.get():
if event.type==KEYDOWN:
if event.key==K_RIGHT:
right_pressed = True
if event.key==K_1:
right_pressed = True
然后在你的循环之外检查它们是否都是真的。
另一种更简单的方法是使用pygame.keys.get_pressed(),这样可以更方便地检查个别密钥是否已关闭。