Sessie 10: Mijn Spel
Dit is jouw sessie. Geen vaste stappen, geen verplichte mechanics. Jij beslist wat je bouwt, en vandaag maak je het.
Jouw spel, jouw regels
In negen sessies heb je geleerd:
- Variabelen, functies en game loops
- Toetsenbord- en muisinput
- Sprites, collision detection en score
- Geluid en animatie
- Klassen en overerving
- Scrollende achtergronden, spawnen en moeilijkheidsscaling
- HP-balken, state machines en baas-AI
Al die bouwstenen liggen klaar. Vandaag combineer je ze in je eigen spel.
Kies je concept
Nog geen idee? Hier zijn wat genres om van te starten:
Dodge-game: wijk objecten uit die steeds sneller komen. Simpel maar verslavend.
Platformer: spring van platform naar platform, verzamel items, vermijd vijanden.
Shooter: schiet vijanden neer die van boven of van de zijkant komen.
Puzzelgame: schuif blokjes, verbind punten, of los een patroon op.
Racegame: ontwerp een parcours en beweeg zo snel mogelijk naar de finish.
Vertel een verhaal: geen score, geen levens. Laat de speler klikken en keuzes maken.
Je mag ook iets combineren: een shooter met puzzelelementen, een platformer met een baas aan het einde. Alles mag.
Plan je spel
Vóór je code schrijft, beantwoord deze drie vragen:
- Wat doet de speler? (bewegen, schieten, springen, klikken, …)
- Wat is het doel? (score halen, de baas verslaan, het einde bereiken, …)
- Wat maakt het moeilijk? (vijanden, obstakels, een timer, …)
Schrijf je antwoorden op een papiertje of in een comment bovenaan je code. Dit helpt je gefocust te blijven als je vastloopt.
Animatie: sprite wisselen per frame
Wil je een loopanimatie, een explosie of een knipperend object? Maak een lijst met afbeeldingsnamen en wissel actor.image elke N milliseconden. De demo hieronder laat zien hoe dat werkt: gebruik de schuifbalk om de snelheid aan te passen en de knop om te pauzeren:
In Python gebruik je dan een lijst met afbeeldingsnamen en een timer:
frames = ['lopen_1', 'lopen_2', 'lopen_3', 'lopen_4']
anim_timer = 0
FRAME_DUUR = 10 # frames (bij 60 fps = ~167 ms)
def update():
global anim_timer
anim_timer += 1
speler.image = frames[(anim_timer // FRAME_DUUR) % len(frames)]Aan de slag
Download de starter via deze link. De starter heeft:
- Een werkende pygame game loop
- Een lege
draw()- enupdate()-sectie - Kleur-constanten en een lettertypevariabele klaar
- Comments die aangeven waar je wat kunt plaatsen
Open main.py en begin met Stap 1 van je eigen plan. De cheatsheet op deze pagina heeft alle patronen van de vorige sessies bij de hand.
Vastgelopen? Vraag een coach. Beschrijf wat je wilt bereiken, niet alleen wat niet werkt. Dan kunnen we samen de beste aanpak bedenken.
Te snel klaar? Voeg geluid toe, maak een start-scherm, of voeg een tweede speler toe.
Showcase
Aan het einde van de sessie presenteert iedereen zijn spel. Je hoeft het niet af te hebben. Laat zien wat je gemaakt hebt en vertel:
- Wat is het concept van je spel?
- Welke techniek uit een vorige sessie heb je gebruikt?
- Wat zou je nog willen toevoegen als je meer tijd had?
Wat nu?
CoderDojo stopt na tien sessies. Zelf bouwen stopt niet.
Blijf bouwen. Kleine projectjes leren je meer dan grote cursussen. Maak een spel voor je broer of zus, je huisdier, of gewoon voor jezelf.
Inspiratie nodig?
- pygame.org: officiële pygame documentatie en voorbeelden
- itch.io: duizenden gratis games om te spelen én te leren van
- realpython.com: gratis Python-tutorials voor elk niveau
- open.spotify.com en freesound.org: gratis geluidseffecten voor je games
CoderDojo komt terug. Jij ook?