<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Sessie 8: Sky Highway :: CoderDojo Python &amp; Pygame</title><link>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/index.html</link><description>Je schip vliegt door een eindeloze luchtweg. De achtergrond scrolt langs je heen, rode obstakels komen van rechts, en sterren geven punten. Hoe langer je overleeft, hoe sneller het wordt!
Wat je vandaag leert Een scrollende achtergrond maken met een scroll_x variabele Objecten spawnen die van rechts naar links bewegen Botsingsdetectie met levens Moeilijkheidsscaling: snelheid verhogen naarmate de score stijgt Stap 0: Installeren Open Thonny. Download de starter via deze link, pak de ZIP uit en open main.py in Thonny. Klik op Run. Je ziet een statisch scherm met een schip en een luchtachtergrond, maar niks beweegt nog. Problemen? Vraag een coach. Stap 1: Achtergrond laten scrollen Een scrollende achtergrond geeft de illusie van beweging. We tekenen de achtergrond twee keer naast elkaar en schuiven de positie elke frame op.</description><generator>Hugo</generator><language>nl</language><atom:link href="https://python.coderdojohasselt.be/sessions/python/08-sky-highway/index.xml" rel="self" type="application/rss+xml"/><item><title>Sessie 8: Coach-notities</title><link>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/mentor-notes/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/mentor-notes/index.html</guid><description>Doel van deze sessie Aan het einde van de Basic checkpoint kan een ninja:
De achtergrond naadloos laten scrollen met de dubbele-blit techniek. Obstakels van rechts naar links bewegen en verwijderen als ze het scherm uit zijn. Levens aftrekken bij een botsing en het spel stoppen bij 0 levens. Wat niet verwacht wordt na sessie 8: sterren, moeilijkheidsscaling, game over scherm. Die zijn Stretch/Expert-materiaal.
Voorbereiding (30 min vóór de sessie) De achtergrondafbeelding in de starter moet precies WIDTH pixels breed zijn (standaard 800px) zodat de dubbele-blit naadloos werkt. speed is een float. Wijs ninjas erop dat pygame.Rect alleen integers accepteert. De starter gebruikt int(scroll_x) al; controleer dat ninjas dit niet verwijderen. Spawn-timer: de starter gebruikt pygame.USEREVENT + 1. Leg kort uit hoe pygame.time.set_timer werkt: het stuurt automatisch een event elke N milliseconden. Tijdsindeling (3 uur) Tijd Activiteit 0:00 tot 0:10 Welkom, terugblik sessie 7 0:10 tot 0:20 Projector: scrollende achtergrond uitleggen 0:20 tot 1:30 Zelfstandig werken: stap 1 en 2 1:30 tot 2:15 Stretch (sterren) 2:15 tot 2:45 Expert (snelheid schalen) + buffer 2:45 tot 3:00 Showcase + cliffhanger Veelgestelde vragen “De achtergrond flikkert” int(scroll_x) ontbreekt bij het blitten. pygame.Surface.blit verwacht integers; als je een float doorgeeft, maakt pygame er intern één van maar dit kan frameconsistentieproblemen geven. Controleer beide blit-aanroepen.</description></item><item><title>Sessie 8: Cheatsheet</title><link>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/cheatsheet/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/cheatsheet/index.html</guid><description>Scrollende achtergrond scroll_x = 0 speed = 4 # Elke frame: scroll_x -= speed if scroll_x &lt;= -WIDTH: scroll_x = 0 screen.blit(bg_image, (int(scroll_x), 0)) screen.blit(bg_image, (int(scroll_x) + WIDTH, 0)) Objecten van rechts spawnen # Obstakel aanmaken (rechts buiten het scherm): obs = pygame.Rect(WIDTH, random.randint(50, HEIGHT - 100), 30, 80) obstacles.append(obs) # Elke frame naar links bewegen: for obs in obstacles[:]: obs.x -= speed if obs.x &lt; -obs.width: obstacles.remove(obs) Spawn-timer met USEREVENT SPAWN_EVENT = pygame.USEREVENT + 1 pygame.time.set_timer(SPAWN_EVENT, 1500) # elke 1,5 seconden for event in pygame.event.get(): if event.type == SPAWN_EVENT: obstacles.append(pygame.Rect(WIDTH, ...)) Levens tekenen for i in range(lives): pygame.draw.rect(screen, RED, (10 + i * 25, 10, 18, 18)) Snelheid schalen BASE_SPEED = 4 speed = BASE_SPEED + score * 0.1 # Spawn-interval schalen: interval = max(500, 1800 - score * 30) pygame.time.set_timer(SPAWN_EVENT, interval) Botsing met levens if ship_rect.colliderect(obs): obstacles.remove(obs) lives -= 1 if lives &lt;= 0: running = False Game over scherm # Na de while-loop: screen.fill(BLACK) go = font.render("GAME OVER", True, RED) screen.blit(go, (WIDTH // 2 - go.get_width() // 2, HEIGHT // 2)) pygame.display.flip() pygame.time.wait(3000)</description></item><item><title>Sessie 8: Demo opname</title><link>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/demo/index.html</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://python.coderdojohasselt.be/sessions/python/08-sky-highway/demo/index.html</guid><description>Sessie 8 gebruikt pure pygame. Toon een GIF van de oplossing op de sessiepagina.
Hoe opnemen Run de oplossing: cd code/sessions/08-sky-highway/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 ~15 seconden op: toon het scrollen, het ontwijken van obstakels, het vangen van een ster en het game over scherm. Sla op als sky-highway.gif in static/sessions/08-sky-highway/. Verwijs ernaar in de worksheet via: ![Demo](/sessions/08-sky-highway/sky-highway.gif). Mikgrootte: ~800×500 pixels, ≤ 2 MB.</description></item></channel></rss>