ホームページ >バックエンド開発 >Python チュートリアル >Pygame でキーボード入力を処理するときに過度に速い動きを防ぐにはどうすればよいですか?

Pygame でキーボード入力を処理するときに過度に速い動きを防ぐにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-18 01:13:10587ブラウズ

How to Prevent Excessively Fast Movement When Handling Keyboard Input in Pygame?

Pygame のキーボード入力: キーストローク イベントの処理

pygame 1.9.2 を使用して単純なゲームを開発する場合、次の問題が発生する可能性があります。矢印キーで制御されている船は非常に速く移動します。この問題は、キーが押されている間にキーの押下が継続的に登録されることが原因で発生します。

これに対処するには、現在押されているキーを取得する pygame.key.get_pressed() に依存する代わりに、キーストローク イベントの処理を検討してください。 KEYDOWN イベントは、現在のフレーム内で押されたキーをキャプチャし、キーストロークごとに動作が 1 回だけ発生するようにします。

events = pygame.event.get()
for event in events:
    if event.type == pygame.KEYDOWN:
        if event.key == pygame.K_LEFT:
            location -= 1
        if event.key == pygame.K_RIGHT:
            location += 1

ただし、継続的な動作が必要な場合は、動作の頻度を制限する制限を実装できます。 1 つのアプローチは、最大フレーム レートを設定するか、カウンターを使用して数ティックごとの動きを制限することです。

move_ticker = 0
keys = pygame.key.get_pressed()
if keys[K_LEFT]:
    if move_ticker == 0:
        move_ticker = 10
        location -= 1
        if location == -1:
            location = 0
if keys[K_RIGHT]:
    if move_ticker == 0:
        move_ticker = 10
        location += 1
        if location == 5:
            location = 4

さらに、ゲーム ループ中に、カウンターをデクリメントします。

if move_ticker > 0:
    move_ticker -= 1

これにより、動きが 10 フレームごとにのみ発生することが保証されます。

以上がPygame でキーボード入力を処理するときに過度に速い動きを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。