<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Dojo Defender : Session 3 :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/index.html</link><description>Aujourd’hui, Dojo Defender déménage de pgzero vers le vrai pygame. Plus de pgzrun.go() — c’est toi qui écris la game loop. Le jeu reste le même, mais le moteur en dessous change. Et à la fin, tu ajoutes du SON.
Ce que tu vas apprendre aujourd’hui La différence entre pgzero et raw pygame Programmer la game loop toi-même : while running: clock.tick(60) Convertir les Actors en Surface + Rect Charger et jouer du son avec pygame.mixer Faire tourner la musique de fond en boucle Étape 0 : Télécharge le starter Le starter d’aujourd’hui est un portage complet de Dojo Defender Session 2 vers raw pygame. Plus de pgzero, mais il se joue pareil.</description><generator>Hugo</generator><language>fr-BE</language><atom:link href="https://python.coderdojohasselt.be/fr/dojo-defender/session-3/index.xml" rel="self" type="application/rss+xml"/><item><title>Dojo Defender Session 3 : Cheatsheet</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/cheatsheet/index.html</guid><description>Game loop pygame import pygame, sys pygame.init() screen = pygame.display.set_mode((800, 600)) clock = pygame.time.Clock() running = True while running: clock.tick(60) for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit(); sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_SPACE: # tirer keys = pygame.key.get_pressed() if keys[pygame.K_LEFT]: ship.rect.x -= 5 screen.fill((10, 10, 30)) ship.draw(screen) pygame.display.flip() GameObject (Surface + Rect) class GameObject: def __init__(self, image, x, y): self.image = pygame.image.load(f'images/{image}').convert_alpha() self.rect = self.image.get_rect(center=(x, y)) def draw(self, surface): surface.blit(self.image, self.rect) Texte en pygame font = pygame.font.SysFont(None, 36) txt = font.render(f"Score : {score}", True, (255, 255, 255)) screen.blit(txt, (10, 10)) Son pygame.mixer.init() shoot = pygame.mixer.Sound('sounds/shoot.wav') shoot.play() pygame.mixer.music.load('sounds/bg_music.wav') pygame.mixer.music.play(-1) pgzero → pygame pgzero pygame Actor('ship') GameObject('ship.png', x, y) keyboard.left keys[pygame.K_LEFT] on_key_down(key) event.type == pygame.KEYDOWN screen.draw.text(...) font.render() + screen.blit() rock.colliderect(ship) rock.rect.colliderect(ship.rect) pgzrun.go() while running: loop</description></item><item><title>Dojo Defender Session 3 : Démo</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/demo/index.html</guid><description>Comment montrer la solution Ouvre un terminal dans le dossier du projet. Lance : uv run python3 code/sessions/04-pong/dojo-defender-solution/main.py Montre : Le jeu démarre avec la musique de fond. Tirer (ESPACE) fait un bruit de laser. Les explosions (collision ennemi/balle) font un bruit d’explosion. Vaisseau touché fait un bruit de hit. Le jeu marche sans pgzero — montre la ligne d’import en haut. La game loop (while running:) est visible dans le code. Montre pygame.mixer.init() et les variables de son.</description></item><item><title>Dojo Defender Session 3 : Notes du coach</title><link>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/fr/dojo-defender/session-3/mentor-notes/index.html</guid><description>Objectif de cette session Après cette session, un ninja sait :
Expliquer la différence entre pgzero et raw pygame Écrire la game loop lui-même (while running: clock.tick(60)) Convertir des Actors en GameObject avec Surface et Rect Gérer l’input avec pygame.key.get_pressed() et KEYDOWN Charger et jouer du son avec pygame.mixer Préparation (30 min avant la session) Les ZIP du starter prêts sur USB et sur le site : dojo-defender-s4-starter.fr.zip et dojo-defender-s4-solution.fr.zip. Lancer le starter une fois sur le portable de la salle dojo. Vérifie que les sons sont prêts dans dojo-defender-assets/sounds/, ou renvoie les ninjas vers la solution. Explique pourquoi on change : « pgzero, c’est des petites roues. Maintenant, vous devenez de vrais développeurs Pygame. » Répartition du temps (3 heures) Cette session fait partie intégrante de la session 4 normale (Pong). Utilise le temps comme ceci :</description></item></channel></rss>