ホームページ >バックエンド開発 >Python チュートリアル >Pygame でスプライト上のマウス クリックを検出するにはどうすればよいですか?

Pygame でスプライト上のマウス クリックを検出するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-25 17:46:10385ブラウズ

How to Detect Mouse Clicks on Sprites in Pygame?

Pygame のマウス クリック検出

Pygame では、スプライト上のマウス クリックを検出するには、メイン ループ中に手動で検査する必要があります。この機能を実装する方法は次のとおりです:

メイン ループ アプローチ:

  1. pygame.event.get() を使用してすべてのイベントを取得します。
  2. マウスボタンアップまたはマウスボタンダウンを確認しますevent.
  3. pygame.mouse.get_pos() を使用してマウス カーソルの位置を取得します。
  4. スプライト リストを反復処理し、マウス カーソルがスプライトの四角形と衝突しているかどうかを確認します。
  5. スプライトが次の場合に意図したアクションを実行します。

コード例:

while ...:
    ev = pygame.event.get()
    for event in ev:
        if event.type == pygame.MOUSEBUTTONUP:
            pos = pygame.mouse.get_pos()
            clicked_sprites = [s for s in sprites if s.rect.collidepoint(pos)]
            # Perform action on clicked sprites

: Pygame は、このシナリオ用のイベント駆動型プログラミングを提供しません。

代替案アプローチ:

あまり最適ではありませんが、マウス カーソルの位置と押されたキーの状態を確認することもできます。ただし、この方法では、連続印刷を防ぐために追加のフラグ処理が必要です。

handled = False
while ...:
    if pygame.mouse.get_pressed()[0] and mysprite.rect.collidepoint(pygame.mouse.get_pos()) and not handled:
        print("You have opened a chest!")
        handled = pygame.mouse.get_pressed()[0]

Sprite Class Method:

また、カスタム MySprite クラス内で次のメソッドを定義することもできます。マウスのクリックを確認します:

class MySprite(Sprite):
    def is_clicked(self):
        return pygame.mouse.get_pressed()[0] and self.rect.collidepoint(pygame.mouse.get_pos())

以上がPygame でスプライト上のマウス クリックを検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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