プログラムのキーボード イベントに問題があります。簡単に言えば、私は 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