一次按多个键

时间:2017-12-22 02:54:57

标签: python pygame

我正在尝试制作一个双人游戏,每个人移动一个物体,但如果一个人移动他们的物体,另一个人就不能移动物体。这是我的代码。

running = True
while running:
    if event.type == pygame.KEYDOWN:
        if (event.key == 276):
            bat2.rect.x -= 2
        if (event.key == 275):
            bat2.rect.x += 2
        if (event.key == 97):
            bat1.rect.x -= 1
        if (event.key == 100):
            bat1.rect.x += 1

每个球棒都是不同的对象。有办法吗?

3 个答案:

答案 0 :(得分:2)

要获得PyGame中的多个密钥,您可以

while running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT():
            running = False

    # --- after events ---

    keys = pygame.key.get_pressed()

    if keys[pygame.K_LEFT]: # 276
        bat2.rect.x -= 2
    if keys[pygame.K_RIGHT]: # 275
        bat2.rect.x += 2
    if keys[pygame.K_a]: # 97
        bat1.rect.x -= 1
    if keys[pygame.K_d]: # 100
        bat1.rect.x += 1

您使用pygame.event.get():获取事件,它会更新特殊列表中的值,您可以使用pygame.key.get_pressed()获取该值,然后您可以检查哪些键被按下 - 但您必须在{{{{}}之后执行此操作1}},不在events内,只有当按钮从“未按下”状态变为“按下”状态时才会创建,而不是在按住状态时创建状态。

使用pygame.KEYDOWN你应该这样做

KEYDOWN

答案 1 :(得分:0)

您需要遍历每个循环接收的每个事件,而不仅仅是第一个循环。尝试将if event.type语句移动到另一个循环中:

while running:
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if (event.key == 276):
                bat2.rect.x -= 2
            if (event.key == 275):
                bat2.rect.x += 2

答案 2 :(得分:-1)

在libgdx中我经常使用:

for(int i=0; i<2; i++)
{
If(Gdx.input.isTouched(i))
//do something
}

&#34; i&lt; 2&#34;允许在屏幕上进行两次触摸:i = 0且i = 1.