pygame でキー入力に基づいてスプライトを移動したい場合、キーを押したままにすると、キーを離すまでスプライトがその方向に移動し続けるコードを書く方法はありますか? 私はこれを試しましたが、プログラムがクラッシュするか、キーを繰り返しタップしてスプライトを意図した方向に移動する必要があります。
3473 次
3 に答える
5
OP は、イベントではなくキーステート ポーリングを必要としKEYDOWN
ます。
この例では、キー イベントとキー ポーリングの両方を使用しています。1 つは「キーを押したとき」に使用し、もう 1 つは「押したまま」に使用します。
import pygame
from pygame.locals import *
done = False
player.pos = Rect(0,0,10,10)
while not done:
for event in pygame.event.get():
# any other key event input
if event.type == QUIT:
done = True
elif event.type == KEYDOWN:
if event.key == K_ESC:
done = True
# get key current state
keys = pygame.key.get_pressed()
if keys[K_LEFT]:
player.pos.left -= 10
if keys[K_RIGHT]:
player.pos.left += 10
if keys[K_UP]:
player.pos.top -= 10
if keys[K_DOWN]:
player.pos.left += 10
if keys[K_SPACE]:
print 'firing gun'
于 2012-11-03T08:45:47.623 に答える
0
通常、 update メソッドで次のような移動関数を使用します。
this.pos_x = direction * speed * delta
ここで、KEYDOWN イベントで方向を 1 または -1 に設定し、KEYUP で方向を 0 に戻します。こうすることで、一定の動きが得られます。
于 2012-11-03T15:06:29.810 に答える
0
概要として、
KEYDOWN
pygame メッセージ キューでイベントをリッスンします。- 興味のあるキーが押されているかどうかを確認します。
- その方向に移動
KEYUP
キーに一致するイベントのメッセージ キューを確認します。- 移動を停止します。
これを実装する方法については、ドキュメントを参照してください。
于 2012-11-03T04:18:30.460 に答える