Gérer les événements : les clics de souris
Clic de souris
Principe général
Les clics de souris génèrent des événements dont le type est pygame.MOUSEBUTTONUP
et pygame.MOUSEBUTTONDOWN
.
Ces événements disposent de deux attributs :
- -
pos
qui permet de récupérer les coordonnées du clique sous forme d'un tuple ; - -
button
qui permet de récupérer le numéro du bouton cliqué (1 : gauche, 2 : molette, 3 : droit).
Exemples
• Affichage des valeurs des attributs de l'événement
import pygame
pygame.init()
largeur = 800
hauteur = 600
fen = pygame.display.set_mode((largeur, hauteur))
continuer = True
while continuer :
for evenement in pygame.event.get():
if evenement.type == pygame.QUIT:
continuer = False
if evenement.type == pygame.MOUSEBUTTONDOWN:
print(evenement.pos) #coordonnées du clique
print(evenement.button) # numéro du bouton
pygame.display.quit()
• Changement de la couleur de fond de la fenêtre lors d'une clic gauche ou droit
import pygame
pygame.init()
fen = pygame.display.set_mode((800,600))
ROUGE = (255, 0, 0)
BLEU = (0, 0, 255)
continuer = True
while continuer :
for evenement in pygame.event.get():
if evenement.type == pygame.QUIT:
continuer = False
if evenement.type == pygame.MOUSEBUTTONDOWN:
if evenement.button == 1 :
fen.fill(BLEU)
print ("clic bouton gauche")
if evenement.button == 3 :
fen.fill(ROUGE)
print ("clic bouton droit")
pygame.display.flip()
pygame.display.quit()
• Positionnement d'une image à l'endroit du clic
Ce programme nécessaire que le fichier ballon.png soit présent dans le même dossier que le programme.
import pygame
pygame.init()
fen = pygame.display.set_mode((800,600))
image_ballon = pygame.image.load("ballon.png")
continuer = True
while continuer :
for evenement in pygame.event.get():
if evenement.type == pygame.QUIT:
continuer = False
if evenement.type == pygame.MOUSEBUTTONDOWN:
if evenement.button == 1:
souris_pos = evenement.pos
image_taille = image_ballon.get_size()
image_pos_x = souris_pos[0] - image_taille[0] //2
image_pos_y = souris_pos[1] - image_taille[1] //2
image_pos = (image_pos_x,image_pos_y)
fen.blit(image_ballon, image_pos)
print(image_pos)
pygame.display.flip()
pygame.display.quit()
Déplacement de la souris
Principe général
Les déplacements de la souris génèrent des événements dont le type est pygame.MOUSEMOTION
.
Ces événements disposent de trois attributs :
- -
pos
qui permet de récupérer les coordonnées de la souris au moment de l'événement ; - -
rel
qui permet de récupérer les coordonnées du vecteur déplacement (sous forme d'un tuple) depuis le précédent déclenchement de l'événement ; - -
buttons
qui permet de savoir si l'un des boutons est enfoncé (sous forme d'un tuple).
Exemples
• Visualisation des valeurs des attributs de l'événement
import pygame
pygame.init()
largeur = 800
hauteur = 600
fen = pygame.display.set_mode((largeur, hauteur))
continuer = True
while continuer :
for evenement in pygame.event.get():
if evenement.type == pygame.QUIT:
continuer = False
if evenement.type == pygame.MOUSEMOTION:
print(evenement.pos) #coordonnées de la souris
print(evenement.rel) #déplacement relatif
print(evenement.buttons) #boutons enfoncés
pygame.display.quit()
• Rond qui suit la souris
import pygame
fen = pygame.display.set_mode((800,600))
couleur_rond = (0, 255, 255)
couleur_fond = (0, 0, 0)
# coordonnées du rond
x = 400
y = 300
rayon = 40
continuer = True
while continuer :
for evenement in pygame.event.get():
if evenement.type == pygame.QUIT:
continuer = False
if evenement.type == pygame.MOUSEMOTION:
# mise à jour de l'affichage
fen.fill(couleur_fond)
pygame.draw.circle(fen, couleur_rond, evenement.pos, rayon)
pygame.display.flip()
pygame.display.quit()