pygame
pygame est une combinaison de Python avec la SDL (Simple Directmedia Library), une bibliothèque libre multi-plateformes permettant la gestion du multimédia dans la programmation.
- L’affichage vidéo 2D
- La gestion de l’audio
- La gestion de périphériques de commandes (clavier, souris…)
La SDL est écrite en C (un langage reconnu pour sa rapidité), mais utilisable par Python (connu pour sa facilité de programmation) !
Installation
Sur une installation de Python
Depuis une fenêtre de commande Windows, un terminal Linux, ou depuis pyzo
Taper la commande :
pip install pygame
Autre méthode :
- Télécharger le Precompiled Wheel Package de pygame (fichier
.whl
adapté à la version de Python) sur le site de Christophe Gohlke. - Suivre la procédure d’installation de bibliothèque.
Sur une installation WinPython
- Télécharger le Precompiled Wheel Package de pygame (fichier
.whl
adapté à la version de Python) sur le site de Christophe Gohlke. - Lancer le WinPython Control Panel (depuis le dossier de WinPython).
Depuis le menu, faire Packages/Add Packages ou bien cliquer directement sur
- Sélectionner le fichier
.whl
téléchargé :
- Cliquer ensuite sur
- Tester si l’installation a bien réussi en tapant dans la console (de spyder par exemple) :
>>> import pygame
S’il n’y a pas de message d’erreur, c’est que tout est Ok !
Premiers pas
Suivre le tutoriel sur OpenClassroom …
Ou bien ce site https://realpython.com/pygame-a-primer/
Structure de base
import pygame from pygame.locals import * pygame.init() horloge = pygame.time.Clock() ################################################################################ # Chargement du fond fond = pygame.image.load("image_de_fond.png") # Ouverture de la fenêtre Pygame et collage du fond fenetre_size = fond.get_rect().size fenetre = pygame.display.set_mode(fenetre_size) fenetre_rect = pygame.Rect((0, 0), fenetre_size) fond = fond.convert() fenetre.blit(fond, (0,0)) # Rafraîchissement de l'écran pygame.display.flip() # Constantes ################################################################################ fps = 30 # Taux de rafraichissement (fps = frame per second) ################################################################################ # Boucle infinie ... continuer = True while continuer: for event in pygame.event.get(): # Attente des événements if event.type == QUIT: continuer = False # Calculs # ............... # Re-collage des éléments fenetre.blit(fond, (0,0)) # Rafraichissement pygame.display.flip() horloge.tick(fps) pygame.quit()
Utilisation
Fermer correctement la fenêtre pygame
Après la boucle principale, tout à la fin du script, ajouter :
<code class="EnlighterJSRAW" data-enlighter-language="python">pygame.quit()</code>
Cadencer un mouvement
Afin que l’exécution d’un programme pygame soit correctement cadencée, par exemple qu’un mouvement se produise à une vitesse régulière, il faut utiliser une horloge (Clock() ) :
<code class="EnlighterJSRAW" data-enlighter-language="python">horloge = pygame.time.Clock()</code>
Puis à chaque itération de la boucle principale, fixer le taux d’images par secondes (Frame Rate ou FPS = Frames Per Second) :
horloge.tick(30) # 30 images par seconde
Gérer les collisions
Excellent tutoriel sur OpenClassrooms