oujood.com

pygame comment créer des surfaces

Dans Pygame, les surfaces sont généralement utilisées pour représenter l'apparence de l'objet et sa position à l'écran. Toutes les images textuelles d'objets que nous créons dans Pygame sont créées à l'aide de surfaces. Créer des surfaces dans Pygame est assez simple.

Créer une surface

Dans Pygame, les surfaces sont généralement utilisées pour représenter l'apparence de l'objet et sa position à l'écran. Tous les objets, textes, images que nous créons dans Pygame sont créés à l'aide de surfaces.

La création de surfaces dans Pygame est assez simple. Il suffit de passer la hauteur et la largeur avec un tuple à la méthode pygame.Surface(). Nous pouvons utiliser différentes méthodes pour formater notre surface comme nous le souhaitons. Par exemple, nous pouvons utiliser pygame.draw() pour dessiner des formes, nous pouvons utiliser la méthode surface.fill() pour remplir la surface. Passons maintenant à l'implémentation de ces fonctions. Discutons de la syntaxe et des paramètres.

La fonction pygame.surface() :

Syntaxe :

pygame.surface()

Elle prend 4 arguments : un tuple de largeur et de hauteur, des drapeaux, une profondeur, un masque.

La fonction pygame.draw() :

Elle est utilisée pour dessiner un objet, une forme.

Syntaxe de la fonction :

Surface.rect(surface, color, rect)

Le code pour dessiner un rectangle en utilisant la méthode pygame.draw.rect() est le suivant :

Exemple :       Copier le code

# Importation de la bibliothèque
import pygame
import time
   
# Initialisation de Pygame
pygame.init()
   
# Création de la surface
sample_surface = pygame.display.set_mode((400,300))
   
# Choix de la couleur rouge pour le rectangle
color = (255,0,0)

# Dessiner le rectangle
pygame.draw.rect(sample_surface, color, 
                 pygame.Rect(30, 30, 60, 60))
 
# La méthode pygame.display.flip() est utilisée 
# pour mettre à jour le contenu de l'écran
pygame.display.flip()

ce qui donne :

créer surface

La fonction surface_name.fill() :

pygame.Surface.fill : Elle est utilisée pour remplir la surface d'une couleur.

Syntaxe:

pygame.Surface.fill(color, rect=None, special_flags=0)

Le code pour remplir la couleur dans la surface en utilisant la méthode surface_name.fill() est le suivant :

Exemple :       Copier le code

import pygame

# Initialisation de Pygame
pygame.init()

# Création de la surface
sample_surface = pygame.display.set_mode((400, 300))

# Choix de la couleur jaune pour le remplissage
color = (255, 255, 0)

# Remplir la surface de couleur
sample_surface.fill(color)

# Mise à jour de l'affichage
pygame.display.flip()

en_cours = True
while en_cours:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            en_cours = False

# Quitter Pygame
pygame.quit()
écran jaune

Chargement d'une image sur la surface

Même si nous pouvons dessiner des formes sur la surface et la remplir de couleurs, nous aurons toujours besoin d'une image sur la surface. Nous pouvons facilement créer ce genre de surface en utilisant la méthode pygame.image.load(). La méthode pygame.image.load() prend comme paramètre le chemin d'accès à l'image, qu'il soit relatif ou absolu.

Syntaxe :

pygame.image.load(img)

Exemple :       Copier le code

# Importation de la bibliothèque
import pygame


# Initialisation de Pygame
pygame.init()

# Création de la surface d'affichage
display_surface = pygame.display.set_mode((600, 500 ))

# Création de la surface d'image
image = pygame.image.load('oujood_logo.png')

# mise en place de notre surface d'image sur l'écran 
# surface
display_surface.blit(image,(10,100))

# mettre à jour l'affichage
pygame.display.flip()
image sur surface

Ajout et utilisation du blitting

Le terme "blitting" est principalement utilisé dans le contexte de la programmation de jeux vidéo et de la gestion d'images. Il s'agit d'une opération qui consiste à copier rapidement des blocs de pixels d'une image source vers une image de destination, en utilisant une opération de copie directe de la mémoire, plutôt que de dessiner les pixels individuellement.

Pour qu'une surface puisse être affichée, il faut qu'elle soit projetée sur l'écran. On peut considérer que cette opération consiste à copier les pixels d'une surface sur une autre. La méthode surface.blit() prend comme premier argument une surface à reproduire et comme second argument un tuple de coordonnées.

Syntaxe :

pygame.Surface.blit(source, dest, area=None, special_flags=0)

La fonction `pygame.Surface.blit()` est une méthode de la classe `pygame.Surface`, qui fait partie de la bibliothèque Pygame. Elle est utilisée pour copier une partie d'une surface (image) source sur une autre surface de destination. Voici une explication des paramètres de cette méthode :

  • 1. `source`: C'est la surface source à partir de laquelle vous souhaitez copier les pixels. Cela peut être une image, un sprite, ou toute autre surface que vous avez créée avec Pygame. Vous spécifiez la surface source en passant l'objet `Surface` correspondant en tant que premier argument.
  • 2. `dest`: C'est la position (coordonnées) où vous voulez coller la surface source sur la surface de destination. Il s'agit généralement d'un tuple contenant les coordonnées x et y auxquelles vous souhaitez que le coin supérieur gauche de la surface source soit placé sur la surface de destination.
  • 3. `area` (facultatif) : Ce paramètre vous permet de spécifier une portion de la surface source que vous souhaitez copier. Si vous le laissez à sa valeur par défaut (`None`), toute la surface source sera copiée. Vous pouvez également spécifier un rectangle (généralement défini avec les coordonnées x, y, largeur et hauteur) pour copier une région spécifique de la surface source.
  • 4. `special_flags` (facultatif) : Il s'agit d'un paramètre optionnel qui permet de spécifier des drapeaux spéciaux pour le processus de copie, comme la transparence, la colorisation, etc. Vous pouvez généralement laisser ce paramètre à 0 si vous ne souhaitez pas appliquer de drapeaux spéciaux.

Exemple :       Copier le code

# Importer la bibliothèque
import pygame
 
# Initialiser Pygame
pygame.init()
 
# Créer la surface d'affichage
display_surface = pygame.display.set_mode((500, 500 ))
 
# Créer la première surface d'image
image1 = pygame.image.load('oujood_logo.png')
 
# Créer la deuxième surface d'image
image2 = pygame.image.load('old-logo.png')
 
# Configurer notre première zone d'image
# afficher la surface
display_surface.blit(image1,(0,0))
 
# afficher notre deuxième surface d'image
# afficher la surface
display_surface.blit(image2,(410,420))
 
# retourner l'affichage
pygame.display.flip()
la fonction blit() de pygame

En utilisant `pygame.Surface.blit()`, vous pouvez facilement copier des images ou des sprites d'une surface à une autre, ce qui est particulièrement utile dans le contexte de la création de jeux vidéo et d'applications graphiques avec Pygame. Cette méthode vous permet de manipuler et de superposer des images pour créer des scènes interactives.

Plus de fonctions importante de surface e pygame

Maintenant que nous avons vu quelques fonctions d'interface comme .blit(), .fill(), etc. Voyons quelques fonctions plus importantes des surfaces de pygame.

pygame.Surface.convert

pygame.Surface.convert : Cette fonction crée une copie de la surface avec un nouveau format de pixel. Le nouveau format de pixel peut être déterminé à partir d'une surface existante, ou la profondeur, les drapeaux et les masques peuvent être utilisés comme arguments.

Syntaxe :

pygame.Surface.convert(Surface=None)

La méthode pygame.Surface.convert() est utilisée pour convertir une surface Pygame en un nouveau format, ce qui peut être utile pour améliorer les performances ou pour s'assurer que la surface est compatible avec un autre format d'affichage.

Voici une explication des paramètres de cette méthode :

  • Surface (facultatif): Il s'agit de la surface à laquelle vous voulez convertir la surface existante. Si vous ne spécifiez pas cette valeur, la conversion sera effectuée sur la propre surface sur laquelle vous appelez la méthode.

La méthode convert() crée une nouvelle surface avec un format différent à partir de la surface source. Le format peut inclure des informations sur la profondeur des couleurs, la transparence, et d'autres propriétés. Voici comment cela fonctionne :

  • Lorsque vous appelez pygame.Surface.convert(), Pygame tente de créer une nouvelle surface avec le meilleur format possible en fonction des paramètres de la surface source et de la surface cible (si spécifiée). Cette conversion peut optimiser les performances en choisissant un format qui est le plus compatible avec le matériel graphique sous-jacent de votre système.

Voici quelques cas d'utilisation courants de convert() :

  • Amélioration des performances : En convertissant une surface vers un format optimisé pour le matériel, vous pouvez accélérer le rendu. Par exemple, si vous avez une surface avec une profondeur de couleur de 32 bits, mais que vous savez que votre matériel peut gérer une profondeur de couleur de 16 bits, la conversion peut améliorer les performances.
  • Gestion de la transparence : Vous pouvez utiliser convert() pour gérer la transparence. Par exemple, si vous avez une surface avec un canal alpha (transparence) et que vous voulez vous assurer qu'elle est correctement gérée, la conversion peut être utile.
  • Compatibilité avec d'autres surfaces : Parfois, vous pouvez avoir besoin de convertir une surface pour qu'elle soit compatible avec d'autres surfaces avec des formats différents. Cela peut être utile lors de la superposition de plusieurs surfaces.

En résumé, pygame.Surface.convert() est une méthode de Pygame utilisée pour convertir une surface en un nouveau format, en optimisant les performances ou en gérant des propriétés spécifiques comme la transparence. La méthode crée une nouvelle surface avec le format souhaité, et vous pouvez l'utiliser pour travailler avec des images et des graphiques de manière plus efficace.

Exemple :

Exemple :       Copier le code

# Importation de la bibliothèque
import pygame

# Initialisation de Pygame
pygame.init()

# Création de la surface
sample_surface = pygame.display.set_mode((400,300))

# changer le format des pixels d'une image
pygame.Surface.convert(sample_surface)

# mise à jour de l'affichage
pygame.display.flip()

Les deux méthodes suivante sont utilisées de la même manière :

pygame.Surface.convert_alpha

pygame.Surface.convert_alpha : Elle crée une nouvelle copie de la surface avec le format de pixel désiré. La nouvelle surface sera dans un format adapté à un affichage rapide au format donné avec un alpha par pixel. Si aucune surface n'est donnée, la nouvelle surface sera optimisée pour l'affichage de l'écran courant.

Syntaxe : pygame.Surface.convert_alpha(Surface)

pygame.Surface.copy

pygame.Surface.copy : Elle crée une nouvelle copie de la surface. La surface dupliquée aura les mêmes formats de pixels, palettes de couleurs, paramètres de transparence et classe que l'originale.

Syntaxe : pygame.Surface.copy()

pygame.Surface.set_colorkey : Définit la clé de couleur actuelle de la surface. Lorsque cette surface est projetée sur une destination, tous les pixels qui ont la même couleur que la clé de couleur seront transparents.

Syntaxe : set_colorkey(Color, flags=0)

Code : Python

Exemple :       Copier le code

# Importation de la bibliothèque
import pygame
 
# Initialisation de Pygame
pygame.init()
 
# Création de la surface d'affichage
display_surface = pygame.display.set_mode((500, 500 ))
 
# Création de la surface d'image
image = pygame.image.load('old-logo.png')
 
# placer notre surface d'image sur la surface d'affichage
# rendre la partie colorée en blanc 
# de la surface comme transparente
pygame.Surface.set_colorkey (image, [255,255,255])
 
display_surface.blit(image,(100,100))
 
# mise à jour de l'affichage
pygame.display.flip()

pygame.Surface.set_alpha

pygame.Surface.set_alpha : La valeur alpha définie pour l'image de la surface complète. Passez 0 pour invisible et 255 pour totalement opaque.

Syntaxe : set_alpha(value, flags=0) ou set_alpha(None)

Exemple :       Copier le code

# Importation de la bibliothèque
import pygame
 
# Initialisation de Pygame
pygame.init()
 
# Création de la surface d'affichage
display_surface = pygame.display.set_mode((500, 500 ))
 
# Création de la surface d'image
image = pygame.image.load('old-logo.png')
 
# placer notre surface d'image sur la surface d'affichage
# fixer la valeur alpha de la surface à 120
pygame.Surface.set_alpha(image, 120)
 
display_surface.blit(image,(100,100))
 
# mise à jour de l'affichage
pygame.display.flip()

pygame.Surface.get_alpha

pygame.Surface.get_alpha : Elle retourne la valeur alpha actuelle de la surface. Syntaxe : get_alpha()

Exemple :       Copier le code

# Importation de la bibliothèque
import pygame
 
# Initialisation de Pygame
pygame.init()
 
# Création de la surface d'affichage
display_surface = pygame.display.set_mode((500, 500 ))
 
# Création de la surface d'image
image = pygame.image.load('gfg_logo.png')
 
# placer notre surface d'image sur la surface d'affichage
# Mettre la valeur alpha de la surface de l'image à 100
pygame.Surface.set_alpha(image, 100)
 
# imprimer la valeur alpha de la surface
print(pygame.Surface.get_alpha(image))
 
display_surface.blit(image,(100,100))
 
# mise à jour de l'affichage
pygame.display.flip()



Voir aussi nos tutoriel :

Formats  médias de Windows

Formats  médias de Windows
Ce chapitre décrit les nouveaux formats Windows Media.

fonction get_html_translation_table, get_html_translation_table

Retourne la table de traduction des entités utilisée par htmlspecialchars et htmlentities

L'attribut lang

Spécifie la langue du contenu de l'élément