Défis Pygame

Voici une liste de défis te permettant de découvrir la programmation textuelle avec python. Tu pourras voir comment construire ton code et les différentes notions essentielles qui vont te servir pour tes futures programmation !

Sur cette page tu trouveras plusieurs séries de défis des plus simples aux plus avancés : 

Le code de départ dans replit

Comprendre le code de départ pré-installé dans replit

Défi 1 – Créer un template 

Sur replit :

Créer un nouveau projet, en choisissant le template “Pygame”

Donne lui le titre base_pygame (car tu le garderas de côté)

=> Créer un projet replit avec le template pygame et intitule le base_pygame

Défi 2 – Commenter le code de départ

Le code de départ dans replit permet de lancer un programme pygame, créer une fenêtre de jeu, et quitter le programme. 

Tu trouveras ci-dessous les explications de chaque ligne de code. A toi de le commenter pour te rappeler des choses qui te paraissent importantes

  • import pygame, sys : Cela importe les modules pygame et sys pour créer des jeux et manipuler différents aspects du runtime Python.
  • from pygame.locals import QUIT : Cette constante est utilisée pour gérer l’événement de fermeture de la fenêtre.
  • pygame.init() : Cela initialise Pygame. Cette étape est obligatoire pour exécuter le programme
  • DISPLAYSURF = pygame.display.set_mode((400, 300)) : Cela crée une fenêtre de jeu de 400 pixels de large sur 300 pixels de haut
  • Change la variable de suite et appelle la « fenetre » au lieu de displaysurf
  • pygame.display.set_caption(‘Hello World!’) : Cela définit le titre de la fenêtre à « Hello World! »
  • while True: : Cela crée une boucle infinie pour garder le jeu en cours d’exécution jusqu’à ce que l’utilisateur décide de fermer la fenêtre.
  • for event in pygame.event.get(): : Cette ligne est une boucle for dans laquelle on va coder tous les évènements. Les événements sont des actions comme des frappes de clavier, des mouvements de souris ou des clics sur des boutons.
  • if event.type == QUIT: : Cette condition vérifie si l’événement actuel est de type QUIT, c’est-à-dire si l’utilisateur a cliqué sur le bouton de fermeture de la fenêtre.
  • pygame.quit() : Cette commande est appelée lorsque l’utilisateur souhaite quitter le programme.
  • sys.exit() : Cela termine l’exécution du programme Python. Sans cela, le programme continuerait à s’exécuter même après avoir désinitialisé Pygame.
  • pygame.display.update() : Cela met à jour l’affichage de la fenêtre de jeu. Cette fonction doit être appelée pour que les changements graphiques que l’on programme soient visibles à l’écran.

=> Commente ton code de départ pour le comprendre et retenir les différentes actions

Défi 3 – Trouve la coquille !

A l’heure de cette ressource, le template pygame a un léger écart d’indentation :

L’indentation est l’espace que l’on met en début de ligne pour dire que le code est à prendre en compte dans une boucle, une condition, une méthode..

Un espace d’indentation est égal à : une fois la touche TAB ou 2 fois la touche espace.

On peut voir l’indentation en allant au bout d’une ligne comprenant une boucle ou une condition et en cliquant sur entrée.

  • Clique après les 2 points de la ligne While True:
  • Puis tape sur entrée
    • Tu verras l’indentation au niveau du trait | bleu clair
    • Pourtant le for de la ligne suivante est un peu avant.

Ce n’est pas contraignant pour le moment, mais ca le sera quand tu feras de gros programme.

=> Rectifie l’indentation en ajoutant un espace devant les lignes de la boucle for et toutes les suivantes

Les paramétrages de base

Configurer les couleurs

Défi 4 – Change la couleur de fond de la fenêtre
  • Exécute ton code en cliquant sur run.
  • Tu verras le visuel de ta fenêtre de jeu.

Remarque que tu n’es plus dans la « console » de python. Mais dans « output » qui permet de voir un visuel graphique. Bienvenue dans Pygame !

Utilise les 2 flèches en diagonales pour ouvrir ta fenêtre en grand. C’est important pour bien voir toute ta fenêtre quand tu joueras.

La fenêtre est noire par défaut. 

On va utiliser la méthode fill() pour changer sa couleur.

  • Tu peux choisir une couleur en mot anglais « white », « red », « blue », « green »…
  • Ou tu peux choisir une couleur personnalisé avec les codes couleurs html : « #FFC980 », « 8DFF80 », « 8099FF »..
 
 
La position de ton code est important : il doit être programmé avant la mise à jour de l’affichage

=> Change la couleur de ta fenêtre de jeu !

Configurer la vitesse de jeu

Défi 5 – Le framerate : Ralentit la vitesse de jeu

Le framerate définit combien de fois le code dans la boucle while va être exécuter par seconde.

Nos yeux ont une bande passante qui est limitée : si on utilise des framerates de plus de 60 images par seconde, cela n’aura pas d’impact car nos yeux voient une réelle différence qu’en dessous de 24 images par seconde.

On va donc limiter le framerate, en créant une variable FPS (frames per second). Ensuite on va créer une variable horloge qui va contenir une methode pygame permettant de suivre le temps et de contrôler le taux de rafraîchissement de notre jeu. Et enfin, on appellera notre variable 

  • Initialise une variable FPS qui sera = à 60
  • Ensuite on va créer une variable horloge qui va contenir une méthode pygame permettant de suivre le temps et de contrôler le taux de rafraîchissement de notre jeu.
  • Puis on limite la boucle d’exécution avec la méthode tick(), avant le code d’affichage des modifications (pygame.display.update())

=> Ralentis la vitesse de jeu et contrôle les FPS !

Défi 5bis – Affiche en console le controle de la vitesse de ton jeu

Tu peux voir en console, le contrôle de la vitesse de ton jeu que tu viens d’installer, et visualiser son impact.

  • Importe time

Dans la boucle While :

Créer une variable temps et utilise la fonction time()

Puis affiche la durée d’exécution dans la console

  • Exécute ton code pour voir l’affichage en console du nombre d’images par seconde
    • Puis change la valeur de ta variable FPS et mets la égal à 1
    • Exécute a nouveau ton code et vois la différence ! 

(N’oublie pas de remettre ta variable FPS sur 60)

=> Affiche en console la durée d’exécution de ton programme

Dessine un robot !

Les prochains défis ont pour but de t’apprendre à créer des formes géographiques avec Pygame.

Tu vas apprendre comment les faire, les positionner, et les modifier

Pour cela, on va dessiner un robot. Prends le temps de le personnaliser et tester les positions !

Préparation du code

Défi 6 – Créer une fonction dessiner()

Continue sur le même projet. On va ranger notre code pour éviter d’avoir une boucle While qui exécute le jeu, beaucoup trop longue, et difficile à relire

Plutôt que de tout coder dans la boucle While :

  • Créer une fonction dessiner()
  • Mets dedans le code pour changer la couleur de fond
  • Puis le code pour afficher les modifications

Ensuite, dans la boucle While, appelle ta fonction ! 

=> Créer une fonction dessiner(), range ton code actuel dedans, et appelle la dans la boucle While !

Les rectangles

Défi 7 – Dessine la tête du robot

Pour créer un rectangle, on va utiliser la méthode rect() de .draw

Détail des paramètres :

  • La surface d’affichage donc notre fenetre
  • Puis le code couleur que l’on veut utiliser
  • (positionnement vertical et horizontal du rectangle dans la fenêtre, puis largeur et hauteur du rectangle)

ATTENTION : 

  • L’ordre de ton code est très important. Ici, mon rectangle est codé après la couleur de la fenêtre, donc il se voit.
  • Si je code le rectangle avant, puis la fenêtre faisant tout l’écran, sa couleur cachera mon rectangle

=> Dessine la tête de ton robot

Les cercles

Défi 8 – Dessine des yeux ronds à ton robot

Pour créer un cercle, on va utiliser la méthode circle() de .draw

Détail des paramètres :

  • La surface d’affichage donc notre fenetre
  • Puis le code couleur que l’on veut utiliser
  • La position du centre du cercle (axe x, axe y)
  • Puis le rayon

ASTUCE : Chaque figure peut avoir un paramètre optionnel en plus. Il s’agit de l’épaisseur du trait. 

Si j’ajoute à la fin, le paramètre supplémentaire avec un 4, l’épaisseur du trait sera de 4 pixels. Ce qui va rendre ma forme géométrique vide à l’intérieur !

=> Ajoute les yeux à ton robot

Les lignes

Défi 9 – Dessine le nez de ton robot 

Pour créer un cercle, on va utiliser la méthode line() de .draw

Détail des paramètres :

  • La surface d’affichage donc notre fenetre
  • Puis le code couleur que l’on veut utiliser
  • La position du point de départ X et Y de la ligne
  • Puis la position du point de fin X et Y de la ligne
  • Ici est ajouté la paramètre optionnel pour l’épaisseur de la ligne

=> Ajoute le nez à ton robot

Les ellipses

Défi 10 – Dessine la bouche de ton robot 

Pour créer un cercle, on va utiliser la méthode ellipse() de .draw

Détail des paramètres :

  • La surface d’affichage donc notre fenetre
  • Puis le code couleur que l’on veut utiliser
  • La position du centre de l’éllipse suivant l’axe X
  • Puis suivant l’axe Y

=> Ajoute la bouche à ton robot

Retour en haut