Frogger
Notitie
Vereist: sessie 5 (Breakout) afgerond.
Een kikker wil de overkant bereiken. Daarvoor moet hij een drukke weg oversteken én een gevaarlijke rivier. Auto’s rijden in drie banen, houtblokken drijven op het water. Eén verkeerde stap en het is gedaan.
Opstarten
Download de startcode en pak de ZIP uit. Open main.py in Thonny en klik Run. Je ziet het speelveld maar de kikker beweegt nog niet. Jij vult de functies in.
Hoe werkt het?
Het scherm is opgedeeld in horizontale banen van 40 pixels:
- Boven: 5 vijvers waar de kikker veilig moet geraken
- Rivier (3 banen): houtblokken drijven voorbij. Op een blok ben je veilig, in het water verdrink je.
- Gras berm: veilige rustplek in het midden
- Weg (3 banen): auto’s rijden heen en weer. Geraakt worden = dood.
- Onder: startpositie van de kikker
TEGEL = 40
KOLOMMEN, RIJEN = 13, 14
# Banen: (rij, richting, snelheid)
AUTO_BANEN = [
(6, 1, 2), # rechts, traag
(7, -1, 4), # links, snel
(8, 1, 3), # rechts, gemiddeld
]Auto’s en houtblokken zijn pygame.Rect-objecten in een lijst. Elk frame verschuif je ze allemaal en verwijder je ze als ze buiten het scherm vallen.
De kikker beweegt in vaste stappen van TEGEL pixels. Druk op een pijltjestoets en de kikker springt één vakje in die richting.
Botsingen check je met rect.colliderect(andere_rect).
✅ Basic
- Kikker verplaatsen: vang de pijltjestoetsen in
KEYDOWNen paskikker.xenkikker.yaan metTEGEL. - Auto’s spawnen: vul
spawn_auto(). Kies een willekeurige baan, maak eenRectnet buiten het scherm, voeg toe aanauto_lijst. - Auto’s bewegen: in
update(): verschuif elke auto metrect.x += richting * snelheid. Verwijder auto’s buiten het scherm. Houd minstens 6 auto’s. - Houtblokken spawnen: vul
spawn_hout(). Hetzelfde principe, maar metHOUT_BANENen een grotere breedte. - Houtblokken bewegen: in
update(): verschuif en verwijder zoals bij auto’s. Houd minstens 4 blokken. - Auto-botsing: als
kikker.colliderect(auto): roepsterf()aan. - Verdrinking: als de kikker in de rivier is (rij 2, 3 of 4) en niet op een houtblok:
sterf(). - Vijver check: als de kikker dicht bij een onbezette vijver is: zet
huizen_gevuld[i] = True,score += 10, reset de kikker. 5 vijvers vol = gewonnen.
Klaar? Je hebt een werkende Frogger!
⭐ Stretch
- Levenden teller: het
levens-systeem staat al klaar. Zorg dat het spel stopt alslevens <= 0en toon “GAME OVER”. - Timer: voeg een timer toe. Start met 30 seconden per level. Als de timer afloopt verlies je een leven. Toon de timer in de HUD. Bij elke gevulde vijver krijg je 5 seconden extra.
- Moeilijkheidsgraad: verhoog de snelheid van auto’s en houtblokken naarmate de score stijgt (
snelheid = basis + score // 50).
🔥 Expert
- Bonusvlieg: een groen insect verschijnt willekeurig op de kaart en beweegt rond. Vang het voor 20 bonuspunten. Laat het na 5 seconden verdwijnen.
- High score: sla de hoogste score op in een variabele
high_score. Toon hem naast de huidige score. Werk bij als de speler een nieuw record zet. - Verschillende voertuigen: voeg vrachtwagens toe (2 vakjes breed, trager) en motoren (1 vakje, sneller). Gebruik een aparte lijst of een
type-veld. - Animatie: laat de kikker kort knipperen als hij sterft (
dood_timerstaat al klaar). Teken een kleine plons als de kikker verdrinkt.
Downloads
- Startcode:
main.pymet het speelveld, de kikker en alle teken-code klaar; jij vult de logica in.
Geïnspireerd op het klassieke Frogger (1981, Konami). Tekeningen met pygame.draw.