<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Session 6 : Platformer :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/index.html</link><description>Dans cette session, tu construis un micro-platformer. Ton personnage a de la gravité, peut sauter et ramasse des étoiles sur les plateformes. Pour la première fois, tu utilises pygame directement, sans pgzrun, et tu ajoutes des effets sonores avec pygame.mixer.
Ce que tu vas apprendre aujourd’hui Simuler la gravité avec une variable vel_y Sauter en rendant vel_y négatif Détecter les collisions avec les plateformes grâce à pygame.Rect Ramasser des items (collision avec les étoiles) Jouer des sons avec pygame.mixer Étape 0 : Installation Ouvre Thonny. Télécharge le starter via ce lien, décompresse le ZIP et ouvre main.py dans Thonny. Clique sur le bouton vert Run. Tu vois une fenêtre avec un personnage, des plateformes et des étoiles, mais le personnage ne tombe pas encore. Des problèmes ? Demande à un coach. Étape 1 : La gravité Dans un platformer, le personnage tombe en continu vers le bas, sauf s’il se trouve sur une plateforme. On simule ça avec vel_y : une vitesse verticale qui augmente à chaque frame à cause de la gravité.</description><generator>Hugo</generator><language>fr-BE</language><atom:link href="https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/index.xml" rel="self" type="application/rss+xml"/><item><title>Session 6 : Notes du coach</title><link>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/mentor-notes/index.html</guid><description>Objectif de cette session À la fin du checkpoint Basic, un ninja sait :
Faire tomber le personnage grâce à vel_y et à la gravité. S’arrêter correctement sur les plateformes via colliderect. Sauter avec ESPACE (seulement quand on_ground vaut True). Ce qui n’est pas attendu après la session 6 : le son, l’écran de victoire, le double saut. Ça, c’est du matériel Expert.
Préparation (30 min avant la session) Teste le ZIP du starter sur un laptop de la salle dojo. Vérifie que pygame est installé (pas pgzero ; c’est la première session avec du pygame pur). sounds/jump.wav présent ? Vérifie que le fichier son est bien dans le ZIP. Projette l’étape 1 en direct à l’écran avant que les ninjas commencent. Le saut de pgzrun vers pygame est un cap mental. Explique que pygame est la même bibliothèque, mais sans le wrapper pgzrun. Répartition du temps (3 heures) Temps Activité 0:00 à 0:10 Accueil, récapitulatif de la session 5 0:10 à 0:25 Projecteur : explication game loop pygame vs. pgzrun 0:25 à 1:30 Travail en autonomie : étapes 1 et 2 1:30 à 2:15 Stretch et Expert 2:15 à 2:45 Buffer / passer dans les rangs / aider 2:45 à 3:00 Showcase + cliffhanger Questions fréquentes « Le personnage traverse les plateformes » Vérifie l’ordre : augmenter vel_y → adapter player_rect.y → la boucle des plateformes. Si la boucle des plateformes est avant le mouvement, ça ne marche pas. Fais comparer au ninja l’ordre de son code avec la fiche de travail.</description></item><item><title>Session 6 : Cheatsheet</title><link>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/cheatsheet/index.html</guid><description>Ouvrir une fenêtre pygame import pygame pygame.init() WIDTH, HEIGHT = 800, 500 screen = pygame.display.set_mode((WIDTH, HEIGHT)) clock = pygame.time.Clock() running = True while running: for event in pygame.event.get(): if event.type == pygame.QUIT: running = False screen.fill((30, 30, 60)) pygame.display.flip() clock.tick(60) La boucle de gravité GRAVITY = 0.5 vel_y = 0 # À chaque frame : vel_y += GRAVITY player_rect.y += int(vel_y) Collision avec une plateforme on_ground = False for platform in platforms: if player_rect.colliderect(platform) and vel_y > 0: player_rect.bottom = platform.top vel_y = 0 on_ground = True Sauter keys = pygame.key.get_pressed() if keys[pygame.K_SPACE] and on_ground: vel_y = -12 Créer un Rect platform = pygame.Rect(x, y, breedte, hoogte) pygame.draw.rect(screen, kleur, platform) Collision avec des items (liste) for item in items[:]: if player_rect.colliderect(item): items.remove(item) score += 1 Le son import os import pygame pygame.mixer.init() # _DIR fait que le chemin reste correct, peu importe d'où tu lances le script _DIR = os.path.dirname(os.path.abspath(__file__)) try: jump_snd = pygame.mixer.Sound(os.path.join(_DIR, "sounds/jump.wav")) except Exception: jump_snd = None if jump_snd: jump_snd.play() Dessiner du texte font = pygame.font.SysFont(None, 36) tekst = font.render(f"Score : {score}", True, (255, 255, 255)) screen.blit(tekst, (10, 10))</description></item><item><title>Session 6 : Enregistrement de la démo</title><link>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/sessions/python/06-platformer/demo/index.html</guid><description>La session 6 utilise du pygame pur (pas de pgzrun), donc une démo WebAssembly n’est pas d’application. Montre un GIF de la solution sur la page de la session.
Comment enregistrer Lance la solution : cd code/sessions/06-platformer/solution &amp;&amp; python main.py. Utilise un enregistreur d’écran : Linux : Peek ou SimpleScreenRecorder. Windows : ScreenToGif. macOS : QuickTime → exporte en GIF via ffmpeg ou Kap. Enregistre ~12 secondes : montre le personnage qui saute, qui ramasse une étoile et l’écran de victoire. Enregistre le fichier sous platformer.gif dans static/sessions/06-platformer/. Fais-y référence dans la fiche de travail via : ![Demo](/sessions/06-platformer/platformer.gif). Taille visée : ~800×500 pixels, ≤ 2 MB.</description></item></channel></rss>