我可以使用Pygame同时按两个键进行单个事件吗?

时间:2016-05-09 17:03:39

标签: python pygame

我正在使用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

2 个答案:

答案 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_pressedone_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(),这样可以更方便地检查个别密钥是否已关闭。