我正在尝试制作一个双人游戏,每个人移动一个物体,但如果一个人移动他们的物体,另一个人就不能移动物体。这是我的代码。
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
每个球棒都是不同的对象。有办法吗?
答案 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.