Comment dessiner avec PyGame et créer des formes ?

Dessiner avec PyGame nous permet de créer des formes avec la fonctionnalité de dessin intégrée. Nous pouvons dessiner des lignes, des cercles, des rectangles et des polygones en spécifiant simplement les points entre lesquels dessiner.

Habituellement, lors de la création d’un programme GUI, nous essayons d’inclure toutes les formes de base. Dans ce tutoriel, nous verrons les fonctions que vous pouvez utiliser pour dessiner différents types de formes dans pygame.

Le dessin des formes doit être fait dans la boucle principale du jeu avant d’appeler pygame.display.update().

Dessiner avec PyGame et créer un rectangle

Tout d’abord, nous allons voir comment dessiner un rectangle, nous pouvons dessiner des rectangles vides et remplis en utilisant la fonction rect(). En fait nous avons besoin de trois arguments, et un quatrième facultatif.

  • La surface sur laquelle nous voulons dessiner.
  • La couleur RVB, sous forme d’un tuple.
  • La position du rectangle.
  • L’ épaisseur de la ligne:
    • Valeur = 0 ( par défaut – remplir le rectangle)
    • Valeur > 0 (utilisée pour l’épaisseur de la ligne)
    • Valeur < 0 (rien de dessiné)

De plus, nous pouvons créer un objet Rect en appelant le constructeur pygame.Rect qui prend quatre paramètres. Que nous verrons dans un prochain tutoriel.

Pour qu’un rectangle occupe une position dans la fenêtre, nous aurons besoin de ces paramètres :

  1. Left (gauche) : le nombre de pixels à partir du côté gauche de la fenêtre.
  2. Top (haut) : le nombre de pixels à partir du haut de la fenêtre.
  3. Width (largeur) : la largeur du rectangle en pixels.
  4. Height (hauteur) : la hauteur du rectangle en pixels.

Dessiner avec PyGame et créer un polygone

Un polygone est une forme avec au moins trois côtés et des angles. Il est cependant possible de définir autant de points que vous le souhaitez. Pour dessiner un polygone, nous utilisons la fonction polygon() de pygame . Cette fonction requiert trois paramètres, avec un quatrième facultatif.

  • La surface sur laquelle nous voulons dessiner.
  • La couleur RVB, sous forme d’un tuple.
  • Les points de notre polygone.
  • L’ épaisseur de la ligne :
    • Valeur = 0 ( par défaut – remplir le polygone)
    • Valeur > 0 (utilisée pour l’épaisseur de la ligne)
    • Valeur < 0 (rien de dessiné)

Dessiner des cercles et des ellipses

Des cercles peuvent être dessinés en utilisant la fonction circle() de pygame . Cette fonction requiert quatre paramètres, avec un cinquième facultatif.

  • La surface sur laquelle nous voulons dessiner.
  • La couleur RVB, sous forme d’un tuple.
  • Le centre du cercle(x, y).
  • Le rayon du cercle à partir du centre, un rayon de 0 dessinera juste le point central.
  • L’ épaisseur de la ligne :
    • Valeur = 0 ( par défaut – remplir le cercle)
    • Valeur > 0 (utilisée pour l’épaisseur de la ligne)
    • Valeur < 0 (rien de dessiné)

Cependant, les ellipses sont dessinées légèrement différemment de ce que vous imaginez. Nous utilisons la fonction ellipse() de pygame mais cette fonction fonctionne en prenant un rect, puis en remplissant le rect avec une ellipse. Vous pouvez utiliser la fonction ellipse() pour dessiner des cercles réguliers.

  • La surface sur laquelle nous voulons dessiner.
  • La couleur RVB, sous forme d’un tuple.
  • Un rectangle pour indiquer la position et les dimensions de l’ellipse. L’ellipse sera centrée à l’intérieur du rectangle.
  • L’ épaisseur de la ligne:
    • Valeur = 0 ( par défaut – remplir l’ellipse)
    • Valeur > 0 (utilisée pour l’épaisseur de la ligne)
    • Valeur < 0 (rien de dessiné)

Dessiner avec PyGame – tracer des lignes

Il existe quatre fonctions pour dessiner des lignes que nous pouvons utiliser, la plus basique est la fonction line(). Cette fonction requiert quatre arguments, avec un cinquième facultatif.

  • La surface sur laquelle nous voulons dessiner.
  • La couleur RVB, sous forme d’un tuple.
  • La position de départ de la ligne : (x, y).
  • La position finale de la ligne : (x, y).
  • L’ épaisseur de la ligne : L’épaisseur de la ligne doit être supérieur ou égal à un.

Prenons un exemple pour dessiner avec Pygame et le module draw.

from pygame import *

BLACK = (0, 0, 0)
GRAY = (127, 127, 127)
WHITE = (255, 255, 255)

RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)

YELLOW = (255, 255, 0)
CYAN = (0, 255, 255)
MAGENTA = (255, 0, 255)

C1_GREEN = (204, 255, 204)
C1_BLUE = (153, 204, 255)
bgColor = C1_GREEN

size = width, height = 800, 600
screen = display.set_mode(size)
screen.fill(bgColor)

draw.rect(screen, RED, (50, 20, 150, 100))
draw.rect(screen, GREEN, (100, 70, 150, 100))

draw.rect(screen, RED, (450, 20, 150, 100), 1)
draw.rect(screen, GREEN, (500, 70, 150, 100), 5)

draw.ellipse(screen, RED, (50, 320, 150, 100))
draw.ellipse(screen, GREEN, (100, 370, 150, 100))

draw.ellipse(screen, RED, (450, 320, 150, 100), 1)
draw.ellipse(screen, GREEN, (500, 370, 150, 100), 5)

draw.line(screen, GRAY, (300,100), (500,500), 5)

# créer un triangle avec 3 lignes de code
draw.line(screen, BLACK, (350, 350), (450, 450), 3)
draw.line(screen, RED, (450, 450), (250, 450), 3)
draw.line(screen, GREEN, (250, 450), (350, 350), 3)

# créer un triangle avec 1 seule ligne de code
draw.lines(screen,BLUE,True, ((650,200),(750,300),(550,300)),5)

display.update()
init()

run = True
while run:
    for pyEvent in event.get():
        if pyEvent.type == QUIT:
            run = False

quit()

L’exécution du code.

dessiner avec Pygame

Dessiner un triangle

En fait, Pygame ne possède pas de fonction qui dessine un triangle. Mais vous pouvez utiliser des lignes pour le faire.
Dans l’exemple précédent, on utilise la fonction ligne() pour dessiner trois lignes. L’idée, est que la fin de chaque ligne, sera le début de la suivante en terme de coordonnées. (triangle de gauche).

Cependant, ce code est assez long, la couleur ou la largeur de la ligne, sont écrites plusieurs fois. Il existe un moyen plus concis qui permet d’obtenir le résultat souhaité.

Tout ce dont nous avons besoin est pygame.draw.lines(). Alors que pygame.draw.line() nous permet de tracer une ligne entre deux points, pygame.draw.lines() nous permet de tracer une séquence de lignes entre de nombreux points.

En fait, la fonction lines(), remplace trois lignes de code par une seule ligne pour dessiner un triangle. Nous n’avons pas réellement fermé le triangle, Pygame l’a fait pour nous, en joignant les points spécifiés. (triangle de droite)

Nous avons vu dans ce tutoriel comment créer des formes simples avec Pygame. Il est possible de créer des formes plus complexes en jouant avec les paramètres des différentes fonctions que nous avons vues.

Comment dessiner avec PyGame et créer des formes ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.

Retour en haut