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

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

DDD
リリース: 2024-12-18 01:13:10
オリジナル
602 人が閲覧しました

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

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

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

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

1

2

3

4

5

6

7

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 つのアプローチは、最大フレーム レートを設定するか、カウンターを使用して数ティックごとの動きを制限することです。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

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

ログイン後にコピー

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

1

2

if move_ticker > 0:

    move_ticker -= 1

ログイン後にコピー

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

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート