Tuto Python & Pygame : créer votre premier jeu

Table des matières

Introduction

  1. Votre première fenêtre de jeu en utilisant Pygame
  2. Maîtriser les modules de Pygame
  3. Représentation des couleurs dans Pygame
  4. Les fonts dans Pygame
  5. Afficher un texte dans Pygame
  6. Afficher des images avec PyGame
  7. Dessiner avec pygame
  8. Les évènements dans pygame
  9. Ajouter des effets sonores à votre jeu

Conclusion

Introduction

Il existe de nombreux langages qui peuvent être utilisés pour créer des jeux, mais dans ce didacticiel, nous allons parler de Python et de la manière la plus adéquate de développer des jeux en utilisant ce dernier. Il est très difficile de développer un jeu en utilisant uniquement Python, c’est la raison pour laquelle il est fortement recommandé d’utiliser un Framework intitulé Pygame.

 Dans ce tutoriel, nous verrons comment configurer PyGame et examinerons quelques éléments qui seront utilisés dans nos futurs programmes. Il faut dire que Python n'inclut pas PyGame, donc le Framework doit être importé afin de l’utiliser adéquatement.

1. Votre première fenêtre de jeu en utilisant Pygame 

Puisque nous allons utiliser le module Pygame, la première chose à réaliser est de l'importer et l’initialiser.

Nous pouvons maintenant créer un objet fenêtre en utilisant pygame.display.set_mode (). Cet objet nécessite deux valeurs qui définissent la largeur et la hauteur de la fenêtre. Plutôt que d'utiliser des constantes, nous définirons deux variables: la largeur et la hauteur, ce qui facilitera le changement du programme plus tard. Pour afficher la fenêtre, nous utilisons la fonction update ().

Pour garder l'écran visible aussi longtemps que nous le voulons, nous devons nous assurer que le programme ne s’arrête pas. Nous pourrions faire cela en ajoutant une boucle infinie (While).

Ensuite, nous allons changer les propriétés de la fenêtre. Par exemple, nous pouvons changer son titre en utilisant la fonction set_caption ().

Syntaxe :

import pygame
pygame.init()
(largeur, hauteur) = (300, 500)
screen = pygame.display.set_mode((largeur, hauteur))
pygame.display.set_caption('Votre première fenêtre pygame ')
pygame.display.update()
running = True
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False

Résultat d’exécution :

2. Maîtriser les modules de Pygame

Le package Pygame contient un certain nombre de modules qui peuvent être utilisés indépendamment. Il y a un module pour chacun des appareils que vous pourriez utiliser dans un jeu, et bien d'autres pour faciliter la création de jeux.

Voir le tableau pour tous les modules Pygame. Vous accédez à ces modules via l'espace de noms Pygame; par exemple, pygame.display fait référence au module d'affichage :

Nom du module

Fonction

pygame.cdrom

Accède et contrôle les lecteurs de CD

pygame.cursors

Charge les images du curseur

pygame.display

Accède à l'écran

pygame.draw

Dessine des formes, des lignes et des points

pygame.event

Gère les événements externes

pygame.font

Utilise les polices système

pygame.image

Charge et enregistre une image

pygame.joystick

Utilise des manettes et des appareils similaires

pygame.key

Lire les pressions sur les touches du clavier

pygame.mixer

Charge et joue des sons

pygame.mouse

Gère la souris

pygame.movie

Lit les fichiers vidéo

pygame.music

Fonctionne avec la musique et le streaming audio

pygame.overlay

Accède aux superpositions vidéo avancées de pygame

pygame.rect

Gère les zones rectangulaires

pygame.sndarray

Manipule les données sonores

pygame.sprite

Gère les images en mouvement

pygame.surface

Gère les images et l'écran

pygame.surfarray

Manipule les données de pixels de l'image

pygame.time

Gère la synchronisation et la fréquence d'images

pygame.transform

Redimensionne et déplace les images

3. Représentation des couleurs dans Pygame

Lorsque Pygame nécessite une couleur, vous la transmettez sous la forme d'un tuple de trois entiers, un pour chaque composant de couleur dans l'ordre suivant: rouge, vert et bleu. La valeur de chaque composant doit être comprise entre 0 et 255, ou 255 représente la pleine intensité et 0 signifie que le composant ne contribue en rien à la couleur finale. Le tableau répertorie les couleurs que vous puissiez créer à l'aide de composants définis sur une intensité désactivée ou maximale.

Couleur

rgb

Noir

(0, 0, 0)

Bleu

(0, 0, 255)

Vert 

(0, 255, 0)

Cyan 

(0, 255, 255)

Rouge 

(255, 0, 0)

Magenta 

(255, 0, 255)

Jaune 

(255, 255, 0)

Blanc 

(255, 255, 255)

4. Les fonts dans Pygame

d La capacité de dessiner du texte sur l’écran peut vraiment aider à tester les scripts; vous pouvez également en avoir besoin pour afficher les instructions de jeu, les options de menu, et ainsi de suite. Le module de police utilise des polices TrueType (TTF), qui sont utilisées sur la plupart des systèmes pour rendre le texte fluide de haute qualité. Il y aura de nombreuses polices installées sur votre ordinateur qui peuvent être utilisées par le module de police.

Pour utiliser une police, vous devez d'abord créer un objet Font. Le moyen le plus simple de le faire est d'utiliser pygame.font.Font, qui utilise l'une des polices que vous avez installées sur votre ordinateur. La ligne suivante crée un objet Font pour la police Arial (une police courante et facile à lire):

Syntaxe

mon_font = pygame.font.Font ("arial", 12)

5. Afficher un texte dans Pygame

Il existe 7 étapes de base pour afficher du texte dans la fenêtre pygame à savoir :

  • Créez un objet de surface d'affichage à l'aide de la méthode display.set_mode () de pygame.
  • Créez un objet Font en utilisant la méthode fony.Font () de pygame.
  • Créez un objet de surface de texte, c'est-à-dire un objet de surface dans lequel le texte est dessiné, en utilisant la méthode render () de l'objet de police pygame.
  • Créez un objet rectangulaire pour l'objet de surface de texte à l'aide de la méthode get_rect () de l'objet de surface de texte pygame.
  • Définissez la position de l'objet Rectangular en définissant la valeur de la propriété center de l'objet rectangulaire pygame.
  • Copie de l'objet de surface de texte sur l'objet de surface d'affichage à l'aide de la méthode blit () de l'objet de surface d'affichage pygame.
  • Affichez l'objet de surface d'affichage dans la fenêtre pygame à l'aide de la méthode display.update () de pygame.

Exemple :

Nous afficherons alors le nom du site web (www.cours-gratuit.com ) dans pygame

Syntaxe :

import pygame
pygame.init()
blanc = (255, 255, 255)
vert = (0, 255, 0)
bleu = (0, 0, 128)
X = 500
Y = 400
display_surface = pygame.display.set_mode((X, Y ))
pygame.display.set_caption('Afficher un texte’)
font = pygame.font.Font('freesansbold.ttf', 38)
text = font.render('Cours-gratuit.com', True, vert, bleu)
textRect = text.get_rect()
textRect.center = (X // 2, Y // 2)
while True :
display_surface.fill(blanc)
display_surface.blit(text, textRect)
for event in pygame.event.get() :
if event.type == pygame.QUIT :
pygame.quit()
quit()
pygame.display.update()

Résultat d’exécution :

6. Afficher des images avec PyGame

PyGame utilise des surfaces pour dessiner des images sur l'écran. Il utilise l'image module pour charger les fichiers images à partir du disque. Ceux-ci sont ensuite convertis en un format interne et stockés dans un objet de surface jusqu'à une utilisation ultérieure. Vous allez créer au moins un objet de surface, pour votre écran principal. Ce sera l'objet sur lequel vous allez dessiner vos sprites et autres images. La surface sur laquelle nous effectuons le dessin principal est le tampon arrière. Nous présentons ce tampon arrière à l'écran en appelant la méthode update ().

Dans ce contexte, il existe quatre étapes de base pour afficher des images dans la fenêtre pygame:

  • Créez un objet de surface d'affichage à l'aide de la méthode display.set_mode () de pygame.
  • Créez un objet de surface Image, c'est-à-dire un objet de surface dans lequel l'image est dessinée dessus, en utilisant la méthode image.load () de pygame.
  • Copiez l'objet de surface d'image sur l'objet de surface d'affichage à l'aide de la méthode blit () de l'objet de surface d'affichage pygame.
  • Affichez l'objet de surface d'affichage dans la fenêtre pygame à l'aide de la méthode display.update () de pygame.

Nous afficherons l'image d’une manette en utilisant pygame :

Syntaxe:

Import game

Import game
pygame.init()
blanc = (255, 255, 255)
X = 400
Y = 800
display_surface = pygame.display.set_mode((X, Y ))
pygame.display.set_caption('Image')
image = pygame.image.load(r'C:\Users\HP\Desktop\manette.png')
while True :
display_surface.fill(blanc)
display_surface.blit(image, (0, 0))
for event in pygame.event.get() :
if event.type == pygame.QUIT :
pygame.quit()
quit()
pygame.display.update()

Résultat d’exécution :

7. Dessiner avec pygame

Les deux premiers paramètres des fonctions dans pygame.draw sont la surface sur laquelle vous souhaitez effectuer le rendu, peut-être l’écran (surface d’affichage) ou une surface lisse suivie de la couleur que vous souhaitez dessiner. Chaque fonction draw prendra également au moins un point, et éventuellement une liste de points. Un point doit être donné sous forme de tuple contenant les coordonnées x et y, où (0, 0) est le coin supérieur gauche de l'écran.

La valeur de retour de ces fonctions de dessin est un objet Rect qui donne la zone de l'écran qui a été dessinée, ce qui peut être utile si nous ne voulons actualiser que les parties de l'écran qui ont été modifiées.

Le tableau suivant représente les fonctions du module pygame.draw disponibles :

Fonction

Interprétation

Draw.rect

Dessine un rectangle

Draw.polygon

Dessine un polygone (forme avec trois côtés ou plus)

Draw.circle

Dessine un cercle

Draw.ellipse

Dessine une ellipse

Draw.arc

Dessine un arc

Draw.line

Trace une ligne

Draw.aaline

Trace une ligne anti-crénelée (lisse)

Exemple :

Cet exemple permet de dessiner un rectangle rempli de couleur bleu :

Syntaxe :

import pygame
pygame.init()
screen = pygame.display.set_mode((500, 500))
done = False
x=60
y=60
while true:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pygame.draw.rect(screen, (0,128,255), pygame.Rect(x, y, 90, 90))
pygame.display.flip()

Résultat d’exécution :

8.Les évènements dans pygame

Pygame crée des événements pour vous informer des événements tel que le mouvement de la souris et les pressions sur les touches.

Des événements peuvent être générés à tout moment, peu importe ce que réalise votre programme. Par exemple, votre code peut dessiner un réservoir sur l'écran lorsque l'utilisateur appuie sur le bouton de tir sur le joypad car il est impossible de  réagir aux événements au moment où ils se reproduisent.  Pygame stocke ainsi les événements dans une file d'attente jusqu'à ce que vous soyez prêt à les gérer (généralement au début de la boucle du jeu principale).

Vous pouvez considérer la file d'attente d'événements comme une ligne de personnes attendant d'entrer dans un bâtiment, chacun portant des informations spécifiques sur un événement. Lorsque le joueur appuie sur le bouton de tir, l'événement joystick arrive, contenant des informations sur la touche enfoncée. De même, quand le joueur relâche le bouton de tir, un clone du même événement de manette arrive avec des informations sur le bouton qui a été relâché. Ils pourraient être suivis d'un événement de souris et d'un événement clé.

Le tableau suivant montre les événements standards que vous pouvez utiliser dans pygame :

Evenements

Objectives

QUIT

L'utilisateur a cliqué sur le bouton de fermeture.

ACTIVEEVENT

Pygame a été activé ou masqué.

KEYPDOWN

La touche a été enfoncée.

KEYUP

La clé a été libérée.

MOUSEMOTION

La souris a été déplacée.

MOUSEBUTTONDOWN

Le bouton de la souris a été enfoncé.

MOUSEBUTTONUP

Le bouton de la souris a été relâché.

JOYAXISMOTION

La manette ou le pad a été déplacé.

JOYBALLMOTION

la boule de clé a été déplacée.

JOYHATMOTION

Le chapeau de la manette a été déplacé.

JOYBUTTONDOWN

Le bouton de la manette ou du pavé tactile a été enfoncé.

JOYBUTTONUP

Le bouton de la manette ou du pad a été relâché.

VIDEORESIZE

La fenêtre Pygame a été redimensionnée.

VIDEOEXPOSE

Une partie ou la totalité de la fenêtre Pygame a été exposée.

USEREVENT

Un événement utilisateur s'est produit.

Par exemple, pour créer un événement afin de déplacer un joueur dans un jeu, il vous suffit d'ajouter le code suivant dans la boucle while

Syntaxe :

for event in pygame.event.get():
if event.type == pygame.QUIT:
raise SystemExit
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_w:
print("Le joueur est monté!")
elif event.key == pygame.K_a:
print("Joueur déplacé vers la gauche!")
elif event.key == pygame.K_s:
print("Joueur déplacé vers le bas!")
elif event.key == pygame.K_d:
print("Le joueur s'est déplacé vers la droite!")

9.Ajouter des effets sonores à votre jeu

Jusqu'à présent, nous avons découvert le gameplay et les aspects visuels de votre jeu. Voyons maintenant comment nous pouvons donner à votre jeu une saveur auditive. pygame fournit un mélangeur pour gérer toutes les activités liées au son. Vous utiliserez les classes et méthodes de ce module pour fournir une musique de fond et des effets sonores pour diverses actions.

Le nom mixer fait référence au fait que le module mélange différents sons en une musique cohérente. En utilisant le sous-module de musique, vous pouvez diffuser des fichiers audio individuels dans une variété de formats tels que MP3, Ogg et Mod. Vous pouvez également utiliser Sound pour définir un seul effet sonore à jouer, au format Ogg ou WAV non compressé. Toute la lecture se produit en arrière-plan, donc lorsque vous jouez un Sound, la méthode revient immédiatement lorsque le son est lu.

pygame.mixer.init () accepte un certain nombre d'arguments, mais les valeurs par défaut fonctionnent correctement dans la plupart des cas. Notez que si vous souhaitez modifier les valeurs par défaut, vous devez appeler pygame.mixer.init () avant d'appeler pygame.init (). Sinon, les valeurs par défaut seront en vigueur indépendamment de vos modifications.

Une fois le système initialisé, vous pouvez configurer vos sons et votre musique.

Syntaxe :

pygame.mixer.music.load(r'C:\Users\Hp\Desktop\son.mp3')
pygame.mixer.music.play(-1)

  • pygame.mixer.music.play (-1):-Le numéro indique la fréquence de la piste musicale. Cela jouera la musique à l'infini. Si nous écrivons un nombre, il jouera autant de fois que le nombre définit avec 0 qui signifie que morceau sera exécuté une seule fois.

Conclusion

Python est un langage de programmation moderne et multi-paradigme. Il peut être utilisé pour la programmation impérative, orientée objet et fonctionnelle. De plus, Pygame est un framework qui vous permet de créer des jeux d'action en 2D.

Alors, maintenant que nous avons découvert ensemble les diverses fonctionnalités de Pygame, il est temps de commencer à créer des jeux attractives.

Article publié le 21 Novembre 2020par Mouhtat Bilal