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 :

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 :

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()