Guide de dessin de formes géométriques de base avec Pygame

La bibliothèque Pygame offre des outils puissants pour mainpuler des graphismes en 2D. L'un des modules les plus utilisés est pygame.draw, qui permet de tracer des formes géométriques directement sur une surface ou dans la fenêtre principale de l'application.

1. Tracer des lignes droites

La fonction pygame.draw.line() est utilisée pour relier deux points par un segment. Sa syntaxe requiert la surface de destination, la couleur, les coordonnées de départ et d'arrivée, ainsi que l'épaisseur du trait.

import pygame
import sys

# Initialisation
pygame.init()
ecran = pygame.display.set_mode((400, 400))
couleur_ligne = (50, 150, 255) # Bleu ciel

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    ecran.fill((255, 255, 255)) # Fond blanc
    # Dessiner une ligne verticale au centre
    pygame.draw.line(ecran, couleur_ligne, (200, 0), (200, 400), 8)
    
    pygame.display.flip()

2. Création d'une grille

En utilisant des boucles itératives, nous pouvons automatiser le tracé de lignes pour générer une grille, ce qui est très utile pour les jeux de plateau ou les éditeurs de niveaux.

import pygame
import sys

pygame.init()
largeur, hauteur = 600, 600
surface = pygame.display.set_mode((largeur, hauteur))
teinte_grille = (100, 100, 100)
intervalle = 40

while True:
    for e in pygame.event.get():
        if e.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    surface.fill((240, 240, 240))

    # Boucle pour les colonnes et les rangées
    for x in range(0, largeur, intervalle):
        pygame.draw.line(surface, teinte_grille, (x, 0), (x, hauteur))
    for y in range(0, hauteur, intervalle):
        pygame.draw.line(surface, teinte_grille, (0, y), (largeur, y))

    pygame.display.update()

3. Dessiner des cercles

La fonction pygame.draw.circle() nécessite un point central et un rayon. Si l'argument d'épaisseur est omis ou mis à 0, le cercle sera plein.

import pygame

pygame.init()
fenetre = pygame.display.set_mode((500, 500))
centre = (250, 250)
rayon_cercle = 80
vert = (46, 204, 113)

while True:
    for ev in pygame.event.get():
        if ev.type == pygame.QUIT:
            pygame.quit()
            exit()

    fenetre.fill((0, 0, 0))
    # Dessin d'un cercle avec une bordure de 5 pixels
    pygame.draw.circle(fenetre, vert, centre, rayon_cercle, 5)
    
    pygame.display.update()

4. Manipulation de rectangles

Le tracé de rectangles s'effectue via pygame.draw.rect(). Cette fonction prend en paramètre un objet ou un tuple définissant la position (x, y) et la taille (largeur, hauteur).

import pygame

pygame.init()
zone_affichage = pygame.display.set_mode((600, 400))
rouge_corail = (255, 127, 80)

# Définition du rectangle : x, y, largeur, hauteur
mon_rect = (150, 100, 300, 200)

while True:
    if pygame.event.peek(pygame.QUIT):
        break
    
    zone_affichage.fill((255, 255, 255))
    pygame.draw.rect(zone_affichage, rouge_corail, mon_rect)
    pygame.display.flip()

5. Animation d'une forme

Pour animer une forme, il suffit de modifier ses coordonnées à chaque itération de la boucle principale et de redessiner le fond pour éviter les effets de traînée.

import pygame
import sys

pygame.init()
fenetre = pygame.display.set_mode((800, 600))
pos_x, pos_y = 50, 50
vitesse_x, vitesse_y = 0.2, 0.2
couleur_carre = (255, 215, 0)

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    # Mise à jour de la position
    pos_x += vitesse_x
    pos_y += vitesse_y

    # Gestion des rebonds sur les bords
    if pos_x < 0 or pos_x > 750:
        vitesse_x *= -1
    if pos_y < 0 or pos_y > 550:
        vitesse_y *= -1

    fenetre.fill((30, 30, 30))
    # Dessiner le carré en mouvement
    pygame.draw.rect(fenetre, couleur_carre, (pos_x, pos_y, 50, 50))
    pygame.display.update()

Autres méthodes de dessin disponibles

Outre les formes basiques, Pygame propose des fonctions spécialisées pour des tracés plus complexes :

  • pygame.draw.polygon() : Dessine une forme à partir d'une liste de points de sommets.
  • pygame.draw.ellipse() : Trace un ovale à l'intérieur d'un rectangle de référence.
  • pygame.draw.arc() : Permet de dessiner une portion de circonférence d'ellipse.
  • pygame.draw.aaline() : Trace des lignes avec anti-aliasing pour un rendu plus lisse (uniquement pour une épaisseur de 1 pixel).

Étiquettes: Pygame Python Graphismes 2D Programmation de jeux

Publié le 30 juillet à 08h45