oujood.com

Comment dessiner des objets et des formes en Pygame

Dans cet article, nous allons voir comment dessiner un objet en utilisant Pygame. Il peut y avoir deux versions pour dessiner une forme, elle peut être solide ou juste un contour.

Dessiner des objets et des formes dans PyGame

Vous pouvez facilement dessiner des formes de base dans Pygame en utilisant la méthode draw de Pygame.

Dessiner un rectangle :

Pour dessiner un rectangle dans votre projet pygame, vous pouvez utiliser la fonction draw.rect().

Syntaxe : pygame.draw.rect(surface, color, rect, width)

Paramètres :

surface :- Nous transmettons ici la surface sur laquelle nous voulons dessiner notre rectangle. Dans l'exemple ci-dessous, nous avons créé un objet surface nommé 'ecran'.

color :- Ici, nous pouvons passer la couleur de notre rectangle. Nous utilisons la couleur bleue dans notre exemple.

rect :- Ici, nous pouvons passer le rectangle, la position et les dimensions.

width :- Ici, nous pouvons passer l'épaisseur de la ligne. Nous pouvons également créer un rectangle solide en changeant la valeur de ce paramètre de largeur. Voyons cela.

Tout d'abord, on importe le module requis et on initialise pygame. Ensuite, on crée l'objet surface d'une dimension spécifique en utilisant la méthode display.set_mode() de pygame. On remplit l'arrière-plan de l'objet surface avec une couleur blanche en utilisant la fonction fill() de pygame. On crée un rectangle en utilisant la méthode draw.rect() de pygame. On met à jour l'objet Surface.

Exemple 1 : Dessiner un rectangle en utilisant pygame.

Exemple :       Copier le code

# Importation du module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Utiliser le module draw.rect de
# pygame pour dessiner le rectangle délimité
pygame.draw.rect(ecran, (0, 0, 255), 
                 [100, 100, 400, 100], 2)
 
# Dessine l'objet surface à l'écran.
pygame.display.update()
Sortie :
dessin rectangle vide en pygame

Pour dessiner un rectangle plein on donne la valeur 0 au paramètre width

le code pour dessiner le rectangle devient :

pygame.draw.rect(ecran, (0, 0, 255), [100, 100, 400, 100], 0)

Dessiner un cercle :

Pour dessiner un cercle dans votre projet pygame, vous pouvez utiliser la fonction draw.circle(). L'approche est la même que celle décrite ci-dessus, seuls la fonction et les paramètres sont modifiés en conséquence.

Syntaxe : pygame.draw.circle(surface, color, center, radius, width)

Paramètres :

surface :- Ici, nous pouvons passer la surface sur laquelle nous voulons dessiner notre cercle. Dans l'exemple ci-dessus, nous avons créé un objet surface nommé 'ecran'.

color :- Ici, nous pouvons passer la couleur de notre cercle. Nous utilisons la couleur verte dans notre exemple.

center :- Ici, nous pouvons passer les coordonnées ( x, y ) du centre du cercle.

radius :- Nous pouvons passer ici le rayon de notre cercle.

width :- Ici, nous pouvons passer l'épaisseur de la ligne. Nous pouvons également créer un cercle solide en changeant la valeur de ce paramètre le en mettant égal au radius ou égal à 0. Voyons donc ce qu'il en est.

Exemple : Dessiner un cercle creux.

Exemple :       Copier le code

# Importation du module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Utiliser le module draw.rect de
# pygame pour dessiner le cercle solide
pygame.draw.circle(ecran, (250, 0, 0), 
                   [300, 300], 100, 1)
 
# Dessine l'objet surface à l'écran.
pygame.display.update()
Sortie :
pygame dessiner cercle

Nous pouvons créer un cercle solide en fixant le paramètre de largeur à 0.

De même, vous pouvez dessiner d'autres formes de base en utilisant le module draw de pygame.

Dessiner un polygone :

Le polygone souhaité peut être dessiné à l'aide de la fonction polygon().

Syntaxe : polygon(surface, couleur, points, largeur)

Une fois encore, l'approche reste la même, seuls la fonction et les paramètres changent.

Exemple : dessiner un polygone solide

Exemple :       Copier le code

# Importation du module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Utiliser le module draw.rect de
# pygame pour dessiner le polygone délimité
pygame.draw.polygon(ecran, (255, 0, 0), 
                    [[300, 300], [100, 400], [100, 300]], 2)
 
# Dessine l'objet surface à l'écran.
pygame.display.update()

Ce qui affiche :

pygame dessiner polygone

Dessiner une ligne :

Une ligne est l'entité de dessin la plus basique et peut être dessinée dans pygame en utilisant la fonction line().

Syntaxe : pygame.draw.line(surface, color, start_pos, end_pos, width)

Exemple 1 : dessiner une ligne

Exemple :       Copier le code

# Importation du module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Utiliser le module draw.line de
# pygame pour dessiner la ligne
pygame.draw.line(ecran, (250, 120, 250), 
                 [100, 300], 
                 [500, 300], 5)
 
# Dessine l'objet surface à l'écran.
pygame.display.update()

Sortie :

pygame dessiner ligne

Dessiner plusieurs formes :

Vous pouvez dessiner plusieurs formes sur le même objet de surface. Pour cela, les premiers modules nécessaires sont importés et pygame est initialisé. Maintenant, créez l'objet surface d'une dimension spécifique en utilisant la méthode display.set_mode() de pygame. Remplissez l'arrière-plan de l'objet surface avec une couleur blanche en utilisant la fonction fill() de pygame. Créez les formes nécessaires comme décrit ci-dessus. Mettre à jour l'objet Surface

Exemple 1 : Dessiner un cercle à l'intérieur d'un rectangle.

Exemple :       Copier le code

# Importer le module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Utiliser le module draw.rect de
# pygame pour dessiner le rectangle
pygame.draw.rect(ecran, (0, 0, 255),
                 [50, 200, 500, 200])
 
# Utilisation du module draw.circle de
# pygame pour dessiner le cercle à l'intérieur du rectangle
pygame.draw.circle(ecran, (0, 255, 0),
                   [300, 300], 100)
 
# Dessine l'objet surface à l'écran.
pygame.display.update()

Exemple 2 : Dessiner une série de rectangles l'un dans l'autre.

Exemple :       Copier le code

# Importation du module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Créer une liste de différents rectangles
rectangle_list = [pygame.Rect(50, 100, 500, 200),
                  pygame.Rect(70, 120, 460, 160),
                  pygame.Rect(90, 140, 420, 120),
                  pygame.Rect(110, 160, 380, 80),
                  pygame.Rect(130, 180, 340, 40)
                  ]
 
# Création d'une liste de couleurs différentes
color_list = [(0, 0, 0),
              (255, 255, 255),
              (0, 0, 255),
              (0, 255, 0),
              (255, 0, 0)
              ]
 
# Création d'une variable que nous utiliserons
# pour itérer sur la liste des couleurs
color_var = 0
 
# Itération sur la liste des rectangles en utilisant la boucle
# boucle for
for rectangle in rectangle_list :
 
    # Dessiner le rectangle 
    # en utilisant la méthode draw.rect()
    pygame.draw.rect(ecran, color_list[color_var],
                     rectangle)
 
    # Augmenter la valeur de color_var
    # de 1 après chaque itération
    color_var += 1
 
# Dessine l'objet surface à l'écran.
pygame.display.update()

Ecrire vos propres fonctions de dessin :

Vous pouvez facilement créer vos propres fonctions de dessin spécialisées dans pygame.
Pour ce faire, suivez la procédure suivante. Créez une fonction de dessin qui prendra la position de départ, la largeur et la hauteur comme paramètres. Dessinez les formes requises comme décrit ci-dessus. Appelez la fonction de dessin()

Exemple :       Copier le code

# Importer le module pygame
import pygame
from pygame.locals import *
 
# Création de la fonction de dessin
 
 
def drawingfunction(x, y, width, height) :
 
    # Création d'un rectangle à l'aide de la méthode draw.rect()
    pygame.draw.rect(ecran, (0, 0, 255), [x, y, width, height])
 
    # Calcul du centre du cercle
    circle_x = largeur/2 + x
    cercle_y = hauteur/2 + y
 
    # Calcul du rayon du cercle
    si hauteur < largeur :
        rayon = hauteur/2
    sinon :
        rayon = largeur/2
 
    # Dessiner le cercle
    pygame.draw.circle(ecran, (0, 255, 0), [circle_x, circle_y], radius)
 
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# Appel de la fonction de dessin
drawingfunction(50, 200, 500, 200)
 
# Dessine l'objet surface à l'écran.
pygame.display.update()

Dessiner des formes avec la souris :

Voyons maintenant comment nous pouvons créer des formes lorsque l'utilisateur clique sur la souris. Nous allons créer des cercles dans l'exemple suivant, mais vous pouvez créer n'importe quelle forme.

Créez une liste pour stocker la position de la forme à dessiner. Créez une variable pour stocker la couleur de la forme. Créez une variable que nous utiliserons pour exécuter la boucle while et Créez une boucle while. Itérer sur tous les événements reçus de pygame.event.get(). Si le type d'événement est quit, mettre la variable run à false. Si le type de l'événement est MOUSEBUTTONDOWN (cet événement se produit lorsque l'utilisateur appuie sur le bouton de la souris), nous récupérons la position actuelle dans une variable et l'ajoutons à notre liste circle_positions. Itérer sur toutes les positions dans le tableau créé à l'aide d'une boucle for. Continuer à dessiner la forme. Mettre à jour l'objet surface.

Exemple :       Copier le code

# Importation du module pygame
import pygame
from pygame.locals import *
 
# initier pygame et donner la permission
# d'utiliser les fonctionnalités de pygame.
pygame.init()
 
# créer l'objet surface d'affichage
# de dimension spécifique.
ecran = pygame.display.set_mode((600, 600))
 
# Remplir l'écran avec de la couleur blanche
ecran.fill((255, 255, 255))
 
# créer une liste dans laquelle nous stockerons
# la position du cercle
circle_positions = []
 
# rayon du cercle
rayon_cercle = 60
 
# Couleur du cercle
color = (0, 0, 255)
 
# Création d'une variable que nous utiliserons
# pour exécuter la boucle while
run = True
 
# Création d'une boucle while
while run :
 # Itération sur tous les événements reçus de pygame.event.get()
    # pygame.event.get()
    for event in pygame.event.get() :
 
        # Si le type de l'événement est quit
        # alors la variable run est réglée sur false
        if event.type == QUIT :
            run = False
 
        # Si le type de l'événement est MOUSEBUTTONDOWN
        # stocker la position actuelle
        elif event.type == MOUSEBUTTONDOWN :
            position = event.pos
            circle_positions.append(position)
             
    # Utilisation d'une boucle for pour itérer
    # sur la liste circle_positions
    # sur la liste circle_positions
    for position in circle_positions :
 
        # Dessiner le cercle
        pygame.draw.circle(ecran, color, position,
                           rayon_cercle)
 
    # Dessine l'objet surface à l'écran.
    pygame.display.update()


Voir aussi nos tutoriel :

Les variables superglobales

Les variables superglobales

localeconv

Lit la configuration locale

XSLT introduction

XSLT introduction