1

プログラムのキーボード イベントに問題があります。簡単に言えば、私は pygame.KEYDOWN イベントを使用していましたが、ほとんどの人から get_pressed() の方が適切なオプションであると聞きました。それに応じてコードを変更しましたが、いくつかの問題が発生しました

まず:

2 つのキーを保持しているときに 1 つだけを解放すると、何らかの理由で pygame は両方を解放したと見なします。これは、斜めの動きを実装するのが面倒であることを意味します

第二に:

斜めの動きは機能しますが、次の場合にのみ機能します。

私は上下に動いていて、左または右を押したままにします

左または右に移動し、上または下を押したままにすると、(何らかの理由で) 機能しません。

これが私が使用しているコードです:

while done == False:
for event in pygame.event.get():
    if event.type == pygame.QUIT:
        done = True
keys = pygame.key.get_pressed()
if (keys[K_KP6]):
    square.spd_x+=5
    if square.spd_x > 5: # Put these speed limits in a function
        square.spd_x = 5
elif (keys[K_KP4]):
    square.spd_x -=5
    if square.spd_x <-5:
        square.spd_x = -5
elif (keys[K_KP8]):
    square.spd_y -=5
    if square.spd_y <-5:
        square.spd_y = -5
elif (keys[K_KP2]):
    square.spd_y +=5
    if square.spd_y >5:
        square.spd_y = 5
else:
    square.spd_x = 0
    square.spd_y = 0

誰かがこの問題に光を当てることができれば、私は非常に感謝し、答えようとしてくれたことに感謝します

ありがとう:D

4

1 に答える 1