Maison > développement back-end > Tutoriel Python > Comment détecter les clics de souris sur les sprites dans Pygame ?

Comment détecter les clics de souris sur les sprites dans Pygame ?

Mary-Kate Olsen
Libérer: 2024-12-25 17:46:10
original
382 Les gens l'ont consulté

How to Detect Mouse Clicks on Sprites in Pygame?

Détection des clics de souris Pygame

Dans Pygame, la détection des clics de souris sur les sprites nécessite une inspection manuelle pendant la boucle principale. Voici comment implémenter cette fonctionnalité :

Approche de la boucle principale :

  1. Récupérez tous les événements à l'aide de pygame.event.get().
  2. Vérifiez l'événement MOUSEBUTTONUP ou MOUSEBUTTONDOWN.
  3. Obtenez la position du curseur de la souris en utilisant pygame.mouse.get_pos().
  4. Parcourez la liste des sprites et vérifiez si le curseur de la souris entre en collision avec le rectangle d'un sprite.
  5. Effectuez l'action prévue si un sprite a été cliqué.
Effectuez l'action prévue si un sprite a été cliqué.

Exemple Code
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
Copier après la connexion
 :

Remarque

 : Pygame ne fournit pas de programmation basée sur les événements pour ce scénario.

Approche alternative

 :

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]
Copier après la connexion
Bien que moins optimal, vous pouvez également vérifier la position du curseur de la souris et l'état des touches enfoncées. Cependant, cette approche nécessite une gestion supplémentaire des indicateurs pour empêcher l'impression continue :

Méthode de classe Sprite

 :

class MySprite(Sprite):
    def is_clicked(self):
        return pygame.mouse.get_pressed()[0] and self.rect.collidepoint(pygame.mouse.get_pos())
Copier après la connexion
Vous pouvez également définir une méthode dans une classe MySprite personnalisée pour vérifier les clics de souris :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal