<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sessie 5: Breakout :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/sessions/python/05-breakout/index.html</link><description>Een bal kaatst heen en weer en beukt rijen gekleurde stenen kapot. Jij bestuurt de paddle om de bal in de lucht te houden. En deze keer hoor je het ook: er zijn geluidseffecten bij elke botsing.
Wat je vandaag leert Geluid laden en afspelen met pygame.mixer Botsingen met meerdere objecten (lijst van stenen) De bal laten stuiteren in de juiste richting Win- en verlies-scherm bouwen Stap 0: Installeren Open Thonny. Download de starter via deze link, pak de ZIP uit en open main.py. Klik op Run. Je ziet de paddle, de bal en de stenen. De bal beweegt al horizontaal maar niet verticaal. Dat ga jij aanpassen. Stap 1: Laat de bal verticaal bewegen Zoek deze regel in de starter:</description><generator>Hugo</generator><language>nl</language><atom:link href="https://python.coderdojohasselt.be/sessions/python/05-breakout/index.xml" rel="self" type="application/rss+xml"/><item><title>Sessie 5: Coach-notities</title><link>https://python.coderdojohasselt.be/sessions/python/05-breakout/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/05-breakout/mentor-notes/index.html</guid><description>Doel van deze sessie Na de Basic checkpoint kan een ninja:
De bal verticaal laten bewegen en stuiteren op alle vier de randen en de paddle. Geluid afspelen bij een botsing. Levens verminderen als de bal de onderkant bereikt. Voorbereiding Starter ZIP klaar. Bevat sounds/hit.wav en sounds/explosion.wav. Test of pygame.mixer werkt op de dojoruimte-laptop (soms ontbreekt de audio-driver). Dojo Defender: ninjas voegen vandaag geluidseffecten toe aan hun project. Tijdsindeling (3 uur) Tijd Activiteit 0:00 tot 0:10 Terugblik + intro geluid 0:10 tot 0:30 Stap 1 tot 2: bal bewegen + stuiteren 0:30 tot 1:15 Stap 3: stenen breken 1:15 tot 1:50 Stap 4: levens, geluid, win/game over 1:50 tot 2:20 Dojo Defender: geluid toevoegen 2:20 tot 2:50 Buffer / stretch / expert 2:50 tot 3:00 Showcase + cliffhanger Veelgestelde vragen “Geen geluid te horen” Twee oorzaken:</description></item><item><title>Sessie 5: Cheatsheet</title><link>https://python.coderdojohasselt.be/sessions/python/05-breakout/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/05-breakout/cheatsheet/index.html</guid><description>Geluid laden en afspelen import os import pygame pygame.mixer.init() # os.path.abspath(__file__) geeft de map van dit bestand, niet de map waar je het script start. # Zonder dit werkt het geluid alleen als je het script vanuit dezelfde map opent. _DIR = os.path.dirname(os.path.abspath(__file__)) try: snd_hit = pygame.mixer.Sound(os.path.join(_DIR, 'sounds/hit.wav')) except: snd_hit = None if snd_hit: snd_hit.play() Bal stuitert op muren if ball.left &lt;= 0 or ball.right >= WIDTH: ball_dx = -ball_dx if ball.top &lt;= 0: ball_dy = -ball_dy Bal stuitert op paddle if ball.colliderect(paddle): ball_dy = -ball_dy Stenen breken (dict in lijst) # Steen aanmaken stenen.append({'rect': pygame.Rect(x, y, b, h), 'kleur': (220, 60, 60)}) # Botsing controleren for steen in stenen[:]: if ball.colliderect(steen['rect']): stenen.remove(steen) ball_dy = -ball_dy score += 10 break Stenen tekenen for steen in stenen: pygame.draw.rect(screen, steen['kleur'], steen['rect']) Levens: bal resetten if ball.top > HEIGHT: levens -= 1 ball.center = (paddle.centerx, paddle.top - 12) ball_dy = -4 Win / game over if not stenen: txt = font.render("JE WINT!", True, (255, 220, 0)) screen.blit(txt, (WIDTH//2 - txt.get_width()//2, HEIGHT//2)) if levens &lt;= 0: txt = font.render("GAME OVER", True, (220, 50, 50)) screen.blit(txt, (WIDTH//2 - txt.get_width()//2, HEIGHT//2))</description></item><item><title>Sessie 5: Demo opname</title><link>https://python.coderdojohasselt.be/sessions/python/05-breakout/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/05-breakout/demo/index.html</guid><description>Run de oplossing: cd code/sessions/05-breakout/solution &amp;&amp; uv run python main.py.
Neem ~12 seconden op: breek meerdere rijen stenen en laat de score oplopen. Sla op als breakout.gif in static/sessions/05-breakout/. Mikgrootte: ~600×500 pixels, ≤ 2 MB.</description></item></channel></rss>