Bonjour et bienvenue dans ce premier petit tuto / cours de SNT, consacré à la découverte de Pygame en Python ! 😃
Vous en avez marre de programmer des trucs tout moches en ligne de commande, qui savent que faire des maths ? Eh bien, ça tombe bien, parce qu'on va programmer un jeu vidéo !!! 🤓
Ouah, trop bien ! J'ai plein d'idées !!!... 😍
Oups, mais êtes-vous au courant, qu'aujourd'hui, il faut des milliers de personnes, de nombreuses années de dur labeur et plein de pognon (on parle de centaines de milliards, là !) pour faire un jeu AAA.
Ah ? Alors, ça risque d'être un peu dur ? 🙃 Y'a pas des milliards dans ma tirelire... Et, j'ai pas envie de passer 10 ans dessus non plus... 😅
Bah non, alors on va faire un petit tuto réaliste (et déjà pas mal compliqué pour un débutant, tu vas voir), afin de voir un peu les bases. 😋
Notre but, ça va être d'ouvrir une fenêtre de jeu vidéo, d'afficher un fond d'écran, puis ensuite un petit bonhomme qu'on pourra déplacer de droite à gauche et même faire sauter ! Juste comme ça :

Ouais, c'est pas mal... 🧐 (mais, je suis quand même un peu déçu...)
Vous vous attendiez quand même pas à de la VR pour votre 1er jeu en Python ? 😬
Et puis, si vous voulez aller plus loin, il y a les autres tutos avec la SDL ou la SFML. 😁
Bon, pour commencer, vous allez installer Edupython sur votre PC favori. Normalement, tout est intégré dedans, et vous avez juste à le démarrer pour commencer. 😉
Si vous voulez essayer VS Code, vous pouvez suivre ce tuto.
Maintenant, vous créez un Dossier exprès sur votre disque dur pour stocker le code des tutos (par exemple : Jeu en Python) et vous téléchargez le fichier ci-dessous, que vous allez nommer "background.png" et que vous allez sauvegarder dans le dossier "graphics" :

background.png
Juste comme ça (vous pouvez appeler votre fichier Main.py) :

Passons maintenant au code source de votre premier programme en Python ! 🤪
Je vous laisse le recopier pour vous familiariser avec, et on l'explique juste après ! C'est parti ! 😎
# Créé par Jay, le 16/06/2024 en Python 3.7 # Import de pygame import pygame from pygame.locals import * #Initialisation de pygame pygame.init() # Ouverture de la fenêtre de jeu en résolution 640 x 360 pixels fenetre = pygame.display.set_mode((640, 360)) #Chargement du fond d'écran (background) fond = pygame.image.load("graphics/background.png").convert() # Boucle principale du jeu continuer = True while continuer : # On teste les événements for event in pygame.event.get(): # Si on appuie sur quitter, on ferme le jeu if event.type == QUIT: continuer = False # On affiche le fond d'écran (background) fenetre.blit(fond,(0,0)) #On rafraichit l'écran pygame.display.update() pygame.quit() |
Et voilà ! Maintenant, si vous cliquez sur la flèche verte en haut d'Edupython, ça va lancer le programme et votre 1er jeu !!! 🤠 qui ne fait rien qu'afficher un décor... (Bouh !!!! 😒)

Mais il faut bien un début à tout ! Et c'est déjà plus fun que 2 + 2 en ligne de commande, non ? 😅
Attention : si le programme se plante et que la fenêtre du background ne s'ouvre pas, cela peut être soit parce que vous n'avez pas mis l'image au bon endroit (et donc que vous ne suivez pas... 🤪) ou alors parce que VS Code est mal configuré. Vous trouverez alors comment le configurer ici (en bas du tuto). Sinon, vous pouvez aussi essayer avec Edupython.
Bon, passons maintenant aux explications ! 😀
Tout d'abord, pour pouvoir programmer des jeux vidéos et afficher des images, gérer une manette, mettre de la musique... il nous faut ce qu'on appelle, en anglais, une library et qui se traduit en français par bibliothèque (logique, non ? 🤪).
C'est là qu'intervient Pygame.
Mais c'est quoi une librai... bibliothèque ? 🧐
Pour faire simple, c'est un ensemble de fonctions que des gens très sympas ont préprogrammées pour toi, afin que vous puissiez, par exemple, ouvrir une fenêtre en quelques lignes de code (au lieu de plusieurs centaines 😱). Pygame repose ainsi sur la SDL 2 qui existe depuis très longtemps et permet à la base de faire des jeux vidéos en C (puis C++).
Mais pourquoi programmer en Python avec, alors ? 😅
Là, j'avoue que je me pose encore la question... 🤣Mais, bon, en SNT, il faut faire du Python, alors allons-y ! Si vous voulez passer au C / C++, vous pourrez ensuite tester les autres tutos ! 😃
Allez ! On commence par importer notre bibliothèque Pygame grâce aux deux lignes suivantes :
|
# Import de pygame
import pygame
from pygame.locals import *
|
Ensuite, on dit à notre programme d'initialiser Pygame. Nous, on n'écrit qu'une seule ligne de code, mais c'est Pygame qui fait tout le boulot ! 😉
|
#Initialisation de pygame
pygame.init()
|
Pour ouvrir notre fenêtre de jeu, on appelle la fonction display.set_mode de Pygame (enfin, certains auront sans doute reconnu un appel de la SDL 😉) et on va créer une fenêtre de 640 pixels x 360.
Pourquoi ? 🤔
Parce qu'on va faire un jeu rétro en pixel art, alors la 4K, c'est pas pour nous ! 🥴 et aussi parce que c'est un format 16:9 plus adapté à nos écrans modernes que le format 4:3. Du coup, ce sera plus joli quand on passera en plein écran ! 😀
|
# Ouverture de la fenêtre de jeu en résolution 640 x 360 pixels
fenetre = pygame.display.set_mode((640, 360))
|
Ensuite, on charge notre image de fond à afficher (oui, celle que vous avez téléchargée ci-dessus ! 🤣 Pour ça, on utilise la fonction load, située dans image de pygame (on verra les class plus tard 😉) et on indique son emplacement sur le disque dur, relativement au fichier python (donc, si ça marche pas, c'est que l'image n'est pas au bon endroit ! 🤪)
|
#Chargement du fond d'écran (background)
fond = pygame.image.load("graphics/background.png").convert()
|
Maintenant que c'est fait, on vient d'initialiser notre jeu avec sa fenêtre et son fichier image (imaginez tous les fichiers à charger dans les jeux modernes ! 🥶) et on peut donc passer à la boucle principale de notre jeu !
Attends, quoi ? Une boucle ? 🙃
Oui, un jeu vidéo, c'est en fait une boucle infinie qui tourne sans arrêt et répète toujours les mêmes choses : tester les inputs (c'est à dire si on appuie sur une touche, par exemple), mettre à jour le jeu en conséquence, c'est l'update (par exemple, faire sauter le bonhomme si on appuie sur A) et enfin afficher le résultat à l'écran en "blittant" tous les graphiques. 😎
Et si on est à 60fps ? 😶
Alors, la boucle se répète 60 fois par seconde ! 😇 (On gèrera les fps dans le chapitre 3).
|
# Boucle principale du jeu continuer = True while continuer : # On teste les événements for event in pygame.event.get(): # Si on appuie sur quitter, on ferme le jeu if event.type == QUIT: continuer = False |
Voilà, tant que le booléen continuer est vrai (True), la boucle continue de tourner à l'inifini. 🤪
On teste les events (ou événements pour voir s'il y a un appui sur la touche Escape / Echap) et si c'est le cas, on passe continuer à Faux (False) pour quitter le jeu. 😡
Si ce n'est pas le cas, on continue en blittant / affichant le fond (notre image background.png, si vous suivez bien 😉) :
|
# On affiche le fond d'écran (background)
fenetre.blit(fond,(0,0))
|
Ensuite, on appelle la fonction display.update de Pygame pour rafraîchir l'écran :
|
#On rafraichit l'écran
pygame.display.update()
|
Et c'est la fin de notre boucle ! 😃
Attention à l'indentation (les espaces) sous Python pour que le programme sache bien où s'arrête la boucle, sinon ça va être la cata ! Pour ma part, je préfère les accolades du C, mais Python est sensé être plus simple... 🤔
Et une dernière ligne de code, qui ne va s'exécuter que si on quitte la boucle infinie :
|
pygame.quit()
|
Et, comme son nom l'indique, elle va permettre de quitter Pygame proprement, notamment en libérant la mémoire qu'on a utlisée (sinon, ça crée des fuites de mémoire dont votre PC ne peut pas se débarrasser sauf en étant redémarré 😉).
Voilà pour cette première étape ! Au chapitre suivant, on importe Rabidja, le lapin ninja de l'extrême ! 😁
A bientôt pour la suite ! 😄

English
Français