<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sessie 6: Platformer :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/sessions/python/06-platformer/index.html</link><description>In deze sessie bouw je een micro-platformer. Je speler heeft zwaartekracht, kan springen, en verzamelt sterren op platforms. Je gebruikt voor het eerst pygame direct, zonder pgzrun, en voegt geluidseffecten toe met pygame.mixer.
Wat je vandaag leert Zwaartekracht simuleren met een vel_y variabele Springen door vel_y negatief te maken Platformbotsingen detecteren met pygame.Rect Items verzamelen (collision met sterren) Geluiden afspelen met pygame.mixer Stap 0: Installeren Open Thonny. Download de starter via deze link, pak de ZIP uit en open main.py in Thonny. Klik op de groene Run-knop. Je ziet een venster met een speler, platforms en sterren, maar de speler valt nog niet. Problemen? Vraag een coach. Stap 1: Zwaartekracht In een platformer valt de speler continu naar beneden, tenzij hij op een platform staat. We simuleren dat met vel_y: een verticale snelheid die elke frame groter wordt door zwaartekracht.</description><generator>Hugo</generator><language>nl</language><atom:link href="https://python.coderdojohasselt.be/sessions/python/06-platformer/index.xml" rel="self" type="application/rss+xml"/><item><title>Sessie 6: Coach-notities</title><link>https://python.coderdojohasselt.be/sessions/python/06-platformer/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/06-platformer/mentor-notes/index.html</guid><description>Doel van deze sessie Aan het einde van de Basic checkpoint kan een ninja:
De speler laten vallen dankzij vel_y en zwaartekracht. Correct stoppen op platforms via colliderect. Springen met SPATIE (alleen als on_ground True is). Wat niet verwacht wordt na sessie 6: geluid, win-scherm, dubbele sprong. Die zijn Expert-materiaal.
Voorbereiding (30 min vóór de sessie) Test de starter ZIP op een dojoruimte-laptop. Controleer dat pygame geïnstalleerd is (niet pgzero; dit is de eerste sessie met pure pygame). sounds/jump.wav aanwezig? Controleer dat het geluidsbestand in de ZIP zit. Projecteer Stap 1 live op het scherm voordat ninjas beginnen. De sprong van pgzrun naar pygame is een mentale drempel. Leg uit dat pygame dezelfde bibliotheek is, maar zonder de pgzrun-wrapper. Tijdsindeling (3 uur) Tijd Activiteit 0:00 tot 0:10 Welkom, recapitulatie sessie 5 0:10 tot 0:25 Projector: uitleg pygame game loop vs. pgzrun 0:25 tot 1:30 Zelfstandig werken: stap 1 en 2 1:30 tot 2:15 Stretch en Expert 2:15 tot 2:45 Buffer / rondlopen / helpen 2:45 tot 3:00 Showcase + cliffhanger Veelgestelde vragen “De speler valt door de platforms heen” Controleer de volgorde: vel_y ophogen → player_rect.y aanpassen → platform-loop. Als de platform-loop vóór de beweging staat, werkt het niet. Laat de ninja de volgorde in zijn code vergelijken met de worksheet.</description></item><item><title>Sessie 6: Cheatsheet</title><link>https://python.coderdojohasselt.be/sessions/python/06-platformer/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/06-platformer/cheatsheet/index.html</guid><description>Pygame venster openen 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) Zwaartekracht-loop GRAVITY = 0.5 vel_y = 0 # Elke frame: vel_y += GRAVITY player_rect.y += int(vel_y) Platformbotsing 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 Springen keys = pygame.key.get_pressed() if keys[pygame.K_SPACE] and on_ground: vel_y = -12 Rect-aanmaken platform = pygame.Rect(x, y, breedte, hoogte) pygame.draw.rect(screen, kleur, platform) Botsing met items (lijst) for item in items[:]: if player_rect.colliderect(item): items.remove(item) score += 1 Geluid import os import pygame pygame.mixer.init() # _DIR zorgt dat het pad klopt ongeacht vanwaar je het script start _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() Tekst tekenen 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>Sessie 6: Demo opname</title><link>https://python.coderdojohasselt.be/sessions/python/06-platformer/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/06-platformer/demo/index.html</guid><description>Sessie 6 gebruikt pure pygame (geen pgzrun), dus een WebAssembly-demo is niet van toepassing. Toon een GIF van de oplossing op de sessiepagina.
Hoe opnemen Run de oplossing: cd code/sessions/06-platformer/solution &amp;&amp; python main.py. Gebruik een schermrecorder: Linux: Peek of SimpleScreenRecorder. Windows: ScreenToGif. macOS: QuickTime → exporteer naar GIF via ffmpeg of Kap. Neem ~12 seconden op: toon de speler die springt, een ster verzamelt en het win-scherm. Sla op als platformer.gif in static/sessions/06-platformer/. Verwijs ernaar in de worksheet via: ![Demo](/sessions/06-platformer/platformer.gif). Mikgrootte: ~800×500 pixels, ≤ 2 MB.</description></item></channel></rss>