Tutoriel Python: Installer et utiliser Pygame

Table des matières

Introduction

  1. Pygame
  2. Comment installer Pygame ?

2.1. Installation sur linux

2.2. Installation sur Windows

2.3. Installation sur Mac

  1. Lancez votre premier jeu avec pygame
  2. Dessiner avec Pygame
  3. Animation des objets
  4. Accéder aux données sonores avec Pygame

Conclusion

Introduction

Bienvenue dans cours-gratuit.com. Ce tutoriel est destiné aux développeurs qui souhaitent créer des jeux avec Pygame rapidement et facilement et se familiariser avec les aspects importants de celui-ci. Les choses typiques que vous apprendriez au profit de ce tutoriel sont les suivantes:

  • Comment installer et exécuter Pygame ?
  • Notions de base sur Pygame
  • Dessiner avec pygame
  • Animer avec pygame
  • Ajouter un fichier audio à votre jeu

1. Pygame

Pygame fait partie du framework Python initialement écrit par Pete Shinners, qui, comme son nom l'indique, peut être utilisé pour créer des jeux vidéo. Pygame est gratuit et open source depuis 2004 et sous licence GPL licence, ce qui signifie que vous êtes autorisés à créer tout type de Jeu. Pygame est construit au-dessus du Simple DirectMedia Layer (SDL).SDL est un framework C qui donne accès aux graphiques, au son, au clavier, et d'autres périphériques d'entrée sur divers systèmes d'exploitation, y compris Linux, Mac OS X et Windows.

2. Comment installer Pygame ?

Avant d'installer Pygame, nous devons avoir Python sur notre machine. Sur quelques systèmes d'exploitation, Python est installé par défaut. Ainsi, Pygame devrait être compatible avec toutes les versions de Python et il est importons à mentionner que nous aurons également besoin de la lirairie NumPy.

2.1. Installation sur linux

  • Sur linux, installez pygame en utilisant cette commande:

sudo apt-get install python-pygame

  • Pygame peut être trouvé dans les archives Debian

http://packages.qa.debian.org/p/pygame.html.

  • Nous pouvons installer NumPy avec la commande suivante:

sudo apt-get install python-numpy

2.2. Installation sur Windows

Le programme d'installation de Windows Python se trouve sur www.python.org/download. Sur ce site, nous pouvons également trouver un outil d’installation pour Mac OS X et archives tar sources pour Linux, Unix et Mac OS X.

  • Depuis le site Web de Pygame :

Accédez à http://www.pygame.org/download.shtml, vous pouvez télécharger l’installateur binaire approprié pour la version Python que nous utilisons.

Depuis cmd

Pip install pygame
Pip install numpy

Résultat d’exécution :

2.3. Installation sur Mac

Depuis cmd

sudo apt-get install python-pygame

3. Lancez votre premier jeu avec pygame

Nous allons créer un jeu simple que nous améliorerons plus loin dans le tutoriel. Comme il est traditionnel dans les Tutoriels de la programmation, nous commencerons par un Hello World!  Il est important de noter la boucle de jeu principale où toutes les actions se produisent et utiliser le module Font pour rendre le texte plus lisible. Dans ce programme, nous manipulerons un objet Surface de Pygame, qui est utilisé pour dessiner et nous gérerons un événement bien défini. Nous allons d'abord créer un fichier appelé jeu.py que nous utiliserons tout au long du tutoriel.

  • Importations:Nous allons d'abord importer les modules Pygame requis. Si Pygame est installé correctement, nous ne devrions obtenir aucune erreur, sinon veuillez retourner à la préparation de votre environnement de développement.
  • Initialisation:Nous initialiserons Pygame en créant un affichage de 400 par 300 pixels et en définissant le titre de la fenêtre sur Hello world:
  • La boucle de jeu principale:les jeux ont généralement une boucle de jeu qui s'exécute indéfiniment jusqu'à ce qu'un événement de fermeture se produise, par exemple. Dans cet exemple, nous définirons uniquement une étiquette avec le texte Hello world aux coordonnées (100, 100). Le texte a une taille de police de 19, de couleur rouge, et la police par défaut.

Voici le code complet de l'exemple Hello World:

Syntaxe :

#Importation
import pygame
from pygame.locals import *
import pygame, sys
# Initialisation
pygame.init()
screen = pygame.display.set_mode((400, 300))
pygame.display.set_caption('Hello World!')
La boucle de jeu principale
while True:
sysFont = pygame.font.SysFont("None", 32)
rendered = sysFont.render('Hello World', 0, (255,100, 100))
screen.blit(rendered, (100, 100))
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()

Résultat d’exécution:

Vous pouvez exécuter votre code à partir de l'ide, pycharm par exemple ou en ouvrant cmd dans votre répertoire de fichiers (jeu.py):

Syntaxe :

Python jeu.py

Résultat d’exécution :

Explication du processus :

Pour plus de visibilité, le tableau ci-dessous représente les fonctions utilisées dans l'exemple précédent.

Fonction

Description

pygame.init ()

Cette fonction effectue l’initialisation et doit être appelée avant toute autre fonction pygame.

pygame.display.set_mode ((400,300))

Cette fonction crée un Objet de surface sur lequel on peut dessiner. Nous donnons à cette fonction un tuple représentant la largeur et la hauteur de la surface.

pygame.display.set_caption (Hello World !')

Cette fonction définit le titre de la fenêtre à une valeur de chaîne spécifiée.

pygame.font.SysFont ("None", 19)

Cette fonction crée une police système à partir d'une liste de polices (dans ce cas aucune) et une police paramètre de taille.

sysFont.render (Hello World, 0, (255, 100, 100))

Cette fonction dessine du texte sur une surface. Le deuxième paramètre indique si l'anticrénelage est utilisé. Le dernier paramètre est un tuple représentant les valeurs RVB d'une couleur.

screen.blit (rendre, (100, 100))

Cette fonction dessine sur une surface.

pygame.event.get ()

Cette fonction obtient une liste d'événements d’objets. Les événements représentent certaines occurrences spéciales dans le système, comme un utilisateur qui quitte le jeu.

pygame.quit ()

Cette fonction nettoie les ressources utilisées par Pygame. Appelez cette fonction avant de quitter le jeu.

pygame.display.update ()

Cette fonction rafraîchit la surface

4. Dessiner avec Pygame

Avant de commencer à créer des jeux sympas, nous avons besoin d'une introduction à la fonctionnalité de dessin de Pygame. Comme nous l'avons remarqué dans l’exemple précédent, dans Pygame, nous dessinons sur les objets Surface. Il existe de nombreuses options de dessin: différentes couleurs, rectangles, polygones, lignes, cercles, ellipses, animations et différentes polices. Les étapes suivantes vous aideront à vous plonger dans les différentes options de dessin que vous pouvez utiliser avec Pygame:

  1. Importations: nous aurons besoin de la bibliothèque NumPy pour générer de manière aléatoire les valeurs RVB pour les couleurs, nous allons donc ajouter une importation supplémentaire pour cela:

Syntaxe :

import numpy

  1. Initialisation des couleurs: générez quatre tuples contenant trois valeurs RVB.

Syntaxe :

Couleurs = numpy.random.randint (0, 255, size = (4,3))

Définissez ensuite la couleur blanche comme une variable:

Syntaxe :

BLANC= (255, 255, 255)

  1. Définissez la couleur d'arrière-plan: nous pouvons rendre tout l'écran blanc avec le code suivant:

Syntaxe :

screen.fill (BLANC)

  1. Dessiner un cercle: dessinez un cercle au centre avec la fenêtre en utilisant la première couleur que nous avons générée:

Syntaxe :

pygame.draw.circle (écran, couleurs [0], (200, 200), 25, 0)

  1. Tracer une ligne: Pour tracer une ligne, nous avons besoin d'un point de départ et de fin. Nous utiliserons la deuxième couleur aléatoire et donnerons à la ligne une épaisseur de 3:

Syntaxe :

pygame.draw.line (screen, couleurs [1], (0, 0),(200, 200), 3)

  1. Dessiner un rectangle: Lorsque vous dessinez un rectangle, il est requis de spécifier une couleur, les coordonnées du coin supérieur gauche du rectangle et ses dimensions:

Syntaxe :

pygame.draw.rect (screen, couleurs[2], (200, 0,100, 100))

  1. Dessiner une ellipse: vous serez peut-être surpris de découvrir que dessiner une ellipse nécessite des paramètres similaires à ceux des rectangles.

Les paramètres décrivent en fait un rectangle imaginaire qui peut être dessiné autour de l'ellipse:

Syntaxe :

pygame.draw.ellipse (écran, couleurs [3], (100,300, 100, 50), 2)

Syntaxe générale de l’exemple :

import pygame
from pygame.locals import *
import numpy
pygame.init()
screen = pygame.display.set_mode((400, 400))
pygame.display.set_caption('Dessiner avec pygame')
couleurs = numpy.random.randint(0, 255, size=(4,3))
BLANC = (255, 255, 255)
screen.fill(BLANC)
pygame.draw.circle(screen, couleurs[0], (200,200), 25, 0)
pygame.draw.line(screen, couleurs[1], (0, 0),(200, 200), 3)
pygame.draw.rect(screen, couleurs[2], (200, 0,100, 100))
pygame.draw.ellipse(screen, couleurs[3], (100,300, 100, 50), 2)
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()

Résultat  d’exécution :

8. Animation des objets

Maintenant que nous savons comment dessiner avec Pygame, il est temps d'essayer une manipulation plus dynamique et poussée. La plupart des jeux, même les plus statiques, ont un certain niveau d'animation. Du point de vue du programmeur, l'animation n'est rien qu’un affichage d’objet dans un endroit différent à un moment différent, simulant ainsi un mouvement.

Dans ce contexte, Pygame propose un objet Clock qui gère le nombre d'images dessinées par seconde. Cela garantit que l'animation est indépendante de la vitesse du processeur de l'utilisateur.

Explication du processus :

Nous allons charger une image et utiliser à nouveau NumPy pour définir un chemin dans le sens des aiguilles d'une montre autour de l'écran:

  1. Tout d'abord, nous devons créer une horloge comme suit:

Syntaxe :

clock = pygame.time.Clock ()

  1. Chargement d'une image:dans cet exemple, il devrait y avoir une image d'une tête. Nous allons charger cette image et la déplacer sur l'écran:

Syntaxe :

img = pygame.image.load ('joueur.png')

  1. Initialisation des tableaux:Nous définirons des tableaux pour insérer les coordonnées des positions, là où nous aimerions placer l'image pendant l'animation. Puisque l'objet sera déplacé, il y a quatre sections logiques du chemin: droite, bas, gauche et haut. Chacune de ces sections comportera 40 marches équidistantes. Nous initialiserons toutes les valeurs des sections à 0:

Syntaxe :

pas = numpy.linspace (20, 360, 40) .astype (integer)
droite = numpy.zeros ((2, len (pas)))
bas = numpy.zeros ((2, len (pas)))
gauche = numpy.zeros ((2, len (pas)))
haut = numpy.zeros ((2, len (pas)))

  1. Définition des coordonnées des positions:il est simple de définir les coordonnées des positions de l'image. Cependant, il y a un problème à noter, la notation [:: - 1] conduit à inverser l'ordre des éléments du tableau:

Syntaxe :

droite [0] = pas
gauche [1] = 20
bas [0] = 360
bas [1] = pas
gauche [0] = pas [:: - 1]
gauche [1] = 360
haut [0] = 20
haut [1] = pas [:: - 1]

  1. Joindre les sections: Les sections de chemin peuvent être jointes, mais avant de pouvoir le faire, les tableaux (arrays) doivent être transposés avec l'opérateur T:

Syntaxe :

pos = numpy.concatenate ((droite.T, bas.T, gauche.T,haut.T))

  1. Réglage de la fréquence d'horloge: Dans la boucle d'événement principal, nous laisserons l'horloge battre à une vitesse de 30 images par seconde:

Syntaxe :

clock.tick (30)

Le code de cet exemple utilise presque tout ce que nous avons appris jusqu'à présent, mais devrait toujours être assez simple pour une meilleure compréhension et assimilation des notions principales.

Syntaxe :

import pygame, sys
from pygame.locals import *
import numpy
pygame.init()
clock = pygame.time.Clock()
screen = pygame.display.set_mode((800, 800))
pygame.display.set_caption('Animer des objets')
img = pygame.image.load('player.png')
pas = numpy.linspace(20, 360, 40).astype(int)
droite = numpy.zeros((2, len(pas)))
bas = numpy.zeros((2, len(pas)))
gauche = numpy.zeros((2, len(pas)))
haut = numpy.zeros((2, len(pas)))
droite[0] = pas
droite[1] = 20
bas[0] = 360
bas[1] = pas
gauche[0] = pas[::-1]
gauche[1] = 360
haut[0] = 20
haut[1] = pas[::-1]
pos = numpy.concatenate((droite.T, bas.T, gauche.T,haut.T))
i = 0
while True:
screen.fill((255, 255, 255))
if i >= len(pos):
i = 0
screen.blit(img, pos[i])
i += 1
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
clock.tick(30)

Résultat d’exécution :

La capture d'écran suivante montre le joueur en mouvement:

Explication du processus :

Nous avons assimilé un peu l'animation dans cette recette. Le concept le plus important que nous avons appris est l'horloge. Les nouvelles fonctions que nous avons utilisées sont décrites dans le tableau suivant:

Fonction

Description

pygame.time.Clock ()

Cette fonction crée une horloge de jeu

numpy.linspace(20, 360, 40)

Cette fonction crée un tableau avec 40 valeurs équidistantes entre 20 et 360

numpy.zeros((2, len(pas)))

Cette fonction crée un tableau des dimensions spécifiées rempli de zéros

numpy.concatenate((droite.T, bas.T, gauche.T, haut.T))

Cette fonction concatène les tableaux pour former un nouveau tableau

Clock.tick (30)

Cette fonction exécute un tick de l'horloge de jeu où 30 est le nombre d'images par secondes

7. Accéder aux données sonores avec Pygame

Un bon jeu doit avoir une bonne musique et des effets sonores. Le module de mixage Pygame nous permet de jouer un son ou n'importe quel audio. D'ailleurs, si vous souhaitez ajouter un son à votre jeu, ajoutez le code suivant à votre syntaxe principale

Explication du processus :

Téléchargez le fichier audio que vous utiliserez dans le jeu. Nous jouerons ce son lorsque le jeu se terminera. Cet exemple nécessite que vous exécutez l'exemple de code, car ce tutoriel n'a pas de support audio.

  1. Création d'un objet son:Nous pouvons créer un objet Pygame Sound après avoir spécifié le nom du fichier audio. Cette classe comme vous vous en doutez incarne le concept de son.

Syntaxe :

audio = pygame.mixer.Sound (audio.mp3)

  1. Lecture du son: l'objet Sound a une méthode de lecture, qui a un certain nombre de paramètres de boucles. Si la valeur de ce paramètre est définie sur -1, le son bouclera indéfiniment.

Syntaxe :

audio.play (-1)

  1. Mettre le jeu en pause: parfois, nous devons interrompre l'exécution d’un jeu, comme dans notre cas pour pouvoir entendre un son. Nous pouvons le faire avec l'extrait de code suivant :

Syntaxe :

pygame.time.delay (TIMEOUT * 1000)

Le délai est spécifié en millisecondes, c'est pourquoi nous multiplions par 1000.

  1. Arrêt du son: après un certain temps, nous devons arrêter le son avec la méthode d'arrêt correspondante:

Syntaxe :

audio.stop ()

Explication du processus :

Les fonctions les plus importantes de cette section sont résumées dans le tableau suivant:

Fonction

description

pygame.mixer.Sound(nom de fichier audio)

Cette fonction crée un objet Sound avec un nom de fichier.

audio.play(-1)

Cette fonction est lue et boucle indéfiniment (-1 signifie indéfiniment). Par défaut, le son n'est joué qu'une seule fois. Cela correspond à 0 boucles. Si la valeur est 2, le son sera joué une fois, puis répété 2 fois de plus.

pygame.time.delay(TIMEOUT * 1000)

Cette fonction met le jeu en pause pendant un nombre spécifié de millisecondes.

audio.stop()

Cette fonction arrête la lecture audio.

Conclusion

Pygame est un framework Python amusant avec lequel nous pouvons facilement créer des jeux simples. Il prend en charge le dessin, le son, les images, l'animation, OpenGL, etc. vous avez exploré de nombreux aspects de Pygame avec des exemples dans ce didacticiel. Le total est autonome et suppose uniquement que vous avez des connaissances de base en programmation Python. Nous vous encourageons à essayer tous les exemples de jeux et à les modifier en fonction de vos propres besoins.

Article publié le 06 Décembre 2020par Mouhtat Bilal