Labyrinthe sur Pygame

Les Makers vont apprendre à créer un jeu de labyrinthe en utilisant Pygame. Ils exploreront l’initialisation de Pygame, la gestion des événements, la détection de collisions, et auront la possibilité de dessiner leur propre parcours.

Objectifs pédagogiques

  • Détection des collisions entre les éléments du jeu.
  • Manipulation des couleurs, dessin d’objets et affichage de textes avec Pygame.
  • Personnalisation du jeu de labyrinthe avec la création de parcours personnalisés et autres fonctionnalités.

Compétences techniques

Compétences design

Compétences projet

La place dans le module

Cette activité vient après l’activité Snake et c’est la dernière de ce module.

Jour 1

Jour 2

Jour 3

Jour 4

Jour 5

1h

🤩

30 min

🤩

30 min

🤩

1h

🤩

Matériel

  • Un ordinateur avec une connexion Internet
  • Un compte Replit

Déroulé de l'activité

Segmentation de l’activité

Détail de l’activité

Segment 1 (1 h) Base du jeu 

1/ Introduction et objectif du projet (5 minutes) 

Explique aux makers le jeu Labyrinthe que vous allez créer ensemble.

  • Fais une démo active du projet exemple pour les anims en partage d’écran.
    • N’oublie pas que quand tu lances le jeu, tu dois cliquer à l’intérieur de la fenêtre pour pouvoir ensuite te diriger à l’aide des fleches directionnelles
Le but est simple : On va créer un labyrinthe et il faudra aller atteindre le point de sortie !
 

Anims :

C’est un projet semi guidé ! Tu vas faire toute la partie de départ avec les makers, puis ils vont pratiquer pour l’arranger, mettre plus de murs, dans une fenêtre plus grande, et le personnaliser 
 
2/ ETAPE 1 : Création du projet et initialisation du jeu (15 minutes) 
Il est temps de créer un projet replit avec un template Pygame
Et le personnaliser avec l’initialisation de départ. Tu peux renvoyer les makers à la section « Code de départ dans replit » et le faire avec eux sur ton projet de démo active. 
Voici le code installé sur cette étape :
  • les imports 
  • pygame.int()
  • L’affichage de la fenêtre
    • On change le nom de la variable displaysurf par fenêtre
    • On stocke la largeur et la hauteur dans des variables pour les utiliser plus tard dans notre code
  • On donne un nom à notre jeu
  • On va aussi donner de suite les couleurs que l’on veut pour notre fenêtre, nos murs, le joueur, et le point d’arrivée. (laisse leur le temps de se choisir des couleurs personnalisées)
  • On rectifie la boucle While avec un clic de barre espace en + devant toutes les lignes de la boucle for
  • On ajoute fenetre.fill() avant l’affichage de la fenêtre pour prendre en compte la couleur de fond que l’on a choisi
3/ ETAPE 2 : Dessiner les murs (15 minutes) 

Pour dessiner les murs, on aura besoin aussi de définir la taille d’une cellule. Puis un mur = une cellule.
Pour faire une barre de 4 cellules, il faudra donner au mur la position des 4 cellules à remplir.

Une cellule est toujours donné en pixels 

Un mur est représenté par les coordonnées (x,y) d’une cellule

Puis dans la boucle while :

  • Pour chaque mur :
    • On va dessiner un rectangle
    • Ajouter la couleur « blanc »
    • aux coordonnées (x,y), calculée en multipliant les positions de la liste de la variable « murs »

Laisse les makers tester leur code et visualiser les murs. 

Fais leur changer les coordonnées des murs, ou en ajouter, pour qu’ils comprennent le positionnement MAIS ils repartent faire le projet guider en enlevant leurs tests. Pour le moment ils font le projet guidé avec les valeurs que tu leurs indiques, et ensuite ils iront le personnaliser.

4/ ETAPE 3 : Déplacements du joueur (25 minutes) 

On va commencer par initialiser les variables qui contiendront la position du joueur.

Le //1 permet d’avoir un positionnement sur une cellule entière

Puis on va programmer les évènements suivant la touche directionnelle cliquée, pour déplacer notre joueur

On utilise la position du joueur, supérieur à la cellule divisé 2 , afin d’être sûr que le joueur est bien entré en contact avec la cellule.

Et l’on dessine le joueur dans notre boucle while pour tester nos déplacements !

Laisse les makers a tester les déplacements de leur joueur. Rappelle leur qu’il faut cliquer sur la fenêtre de jeu pour pouvoir se déplacer dedans par la suite. 

Aide à la relecture du code les makers qui auraient des bugs. Les autres makers peuvent participer en partage d’écran a trouver la coquille, cela n’ira que plus vite, et c’est instructif de chercher les erreurs de syntaxe ou d’indentation !

Segment 2 (30 min) Coder les collisions avec les murs

1/ ETAPE 4 : Coder les collisions avec les murs

On va maintenant coder les collisions entre le joueur et les murs. 

On affichera un message à l’écran indiquant GAME OVER et on stoppera le jeu.

En premier lieu, on va initialiser une taille de police d’écriture

Puis dans la boucle while, avec une indentation au niveau de la boucle for : on programme la collision entre le joueur et les murs.

Le code est entièrement commenté.

Laisse les makers tester leur programme et si la collision est bien pris en compte !

Segment 3 (30 min) Coder le point d’arrivée

1/ ETAPE 5 : Dessiner le point d’arrivée (15 min)

On initialise les coordonnées du point d’arrivée.

On divise la cellule par 2 pour que le point ne touche pas le bord de la fenetre, mais qu’il soit a une demie cellule du bord (pour qu’il soit plus facile a toucher)

On dessine le point d’arrivée et on teste notre code pour voir si il s’affiche bien !

2/ ETAPE 5 : Coder la collision entre le joueur et le point d’arrivée (15 min)

Puis on code dans la boucle while, la vérification de l’arrivée.

On est sur le meme code que vu précédemment pour la game over !

Les makers testent leur code final du projet guidé, en vérifiant le programme du point d’arrivée, quand on le touche.

Segment 4 (1H) Projet libre

1/ Projet Libre (50 min)

Les makers vont maintenant pouvoir pratiquer avec plus d’autonomie tout ce qu’ils ont appris jusqu’ici.

Dans un premier temps, challenge les en augmentant la taille de la fenêtre et en ajoutant plus de murs, pour qu’ils deviennent un vrai labyrinthe !

Ensuite, suivant le temps restant, ils peuvent ajouter le bonus qu’ils souhaitent :

  • Ajouter du son 
  • Ajouter une collision avec les bords (qui impacte un game over, ou qui stoppe le joueur pour ne plus sortir de la zone)
  • Créer un pion « piège », si on le touche le joueur revient au point de départ etc…
2/ Partage de projets (10 min)

Garde le temps nécessaire pour laisser les makers partager leurs projets et voir leurs labyrinthes personnalisés !

Tips 

RAS

Retour en haut