<?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: Sessie 3 :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/dojo-defender/session-3/index.html</link><description>Vandaag verhuist Dojo Defender van pgzero naar echte pygame. Geen pgzrun.go() meer — jij schrijft de game loop zelf. Het spel blijft hetzelfde, maar de motor eronder is anders. En aan het einde voeg je GELUID toe.
Wat je vandaag leert Het verschil tussen pgzero en raw pygame De game loop zelf programmeren: while running: clock.tick(60) Actors omzetten naar Surface + Rect Geluid laden en afspelen met pygame.mixer Achtergrondmuziek laten loepen Stap 0: Download de starter De starter voor vandaag is een volledige port van Dojo Defender Sessie 2 naar raw pygame. Geen pgzero meer, maar het speelt hetzelfde.</description><generator>Hugo</generator><language>nl</language><atom:link href="https://python.coderdojohasselt.be/dojo-defender/session-3/index.xml" rel="self" type="application/rss+xml"/><item><title>Dojo Defender Sessie 3: Cheatsheet</title><link>https://python.coderdojohasselt.be/dojo-defender/session-3/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/dojo-defender/session-3/cheatsheet/index.html</guid><description>Pygame game loop 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: # schiet 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) Tekst in pygame font = pygame.font.SysFont(None, 36) txt = font.render(f"Score: {score}", True, (255, 255, 255)) screen.blit(txt, (10, 10)) Geluid 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 Sessie 3: Coach-notities</title><link>https://python.coderdojohasselt.be/dojo-defender/session-3/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/dojo-defender/session-3/mentor-notes/index.html</guid><description>Doel van deze sessie Na deze sessie kan een ninja:
Het verschil uitleggen tussen pgzero en raw pygame De game loop zelf schrijven (while running: clock.tick(60)) Actors omzetten naar GameObject met Surface en Rect Input afhandelen met pygame.key.get_pressed() en KEYDOWN Geluid laden en afspelen met pygame.mixer Voorbereiding (30 min vóór de sessie) Starter ZIPs klaar op USB en de site: dojo-defender-s4-starter.zip en dojo-defender-s4-solution.zip. De starter éénmaal draaien op de dojoruimte-laptop. Zorg dat de sounds klaar staan in dojo-defender-assets/sounds/, óf verwijs ninja’s naar de oplossing. Leg uit waarom we overstappen: “pgzero is een trainingswieltje. Nu worden jullie échte Pygame-developers.” Tijdsindeling (3 uur) Deze sessie is integraal onderdeel van de normale sessie 4 (Pong). Gebruik de tijd als volgt:</description></item><item><title>Dojo Defender Sessie 3: Demo</title><link>https://python.coderdojohasselt.be/dojo-defender/session-3/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/dojo-defender/session-3/demo/index.html</guid><description>Hoe demonstreer je de oplossing Open een terminal in de projectmap. Voer uit: uv run python3 code/sessions/04-pong/dojo-defender-solution/main.py Laat zien: Het spel start met achtergrondmuziek. Schieten (SPATIE) maakt een laser-geluid. Explosies (vijand/kogel botsing) maken een explode-geluid. Schip geraakt maakt een hit-geluid. Het spel werkt zonder pgzero — toon de import-regel bovenaan. De game loop (while running:) is zichtbaar in de code. Toon pygame.mixer.init() en de geluidsvariabelen.</description></item></channel></rss>