キーを押したままにするとスプライトが動くようにする解決策を見つけました。問題は、醜い複製コードを書かなければならないことです。私が見つけた現在の解決策は次のとおりです。
for event in pygame.event.get():
if event.type == KEYDOWN:
keystate = pygame.key.get_pressed()
while keystate[K_RIGHT]:
screen.fill((255,255,255))
pygame.event.get()
for sprite in sprites:
rimage = sprite[1].getimage()
if sprite[2] is None:
x+=3
sprite[1].update(time)
screen.blit(rimage, (x,y))
if sprite[1].isfinished() == True:
sprite[1].reset()
last_dir = "right"
if x >= screen_width - rimage.get_width():
x = screen_width - rimage.get_width()
#update player sprite movement
#update player sprite animation
#update rest of game map
keystate = pygame.key.get_pressed()
time = pygame.time.get_ticks()
pygame.display.update()
問題は、while キーステート ブロックです。方向ごとに繰り返す必要があり、ゲームの世界は while ブロックごとに更新する必要があります。つまり、同じコードを複製する必要がある場所は 5 か所です...4 方向に加えて、キーが押されていない場合。関数でラップすることはできましたが、pygame でボタンを押したままにするより良い方法があるかどうか疑問に思っていました。