5.3 Animaties met async play.repeat_forever
Hier bouw je op verder: 4.5 Een score bijhouden met global en If en else
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
Nu je weet hoe async en await werken, kun je ook eenvoudig animaties maken. Met @play.repeat_forever in combinatie met async kun je code steeds opnieuw laten uitvoeren.
Kleur laten veranderen
De bal verandert nu steeds van kleur: rood → oranje → geel → groen → blauw → paars → rood, enzovoort.
Hoe werkt dit?
@play.repeat_forever
async def verander_kleur():
...
Deze functie wordt steeds opnieuw uitgevoerd, totdat het programma stopt. Door async ervoor te zetten kan de functie wachten zonder het hele spel te pauzeren.
bal.color = 'orange'
We veranderen de kleur van de bal naar oranje door simpelweg een nieuwe waarde toe te wijzen.
await play.timer(seconds=0.5)
We wachten 0.5 seconden voordat we de volgende kleur instellen. Dit blijft maar herhalen.
Opdracht 5.3.a: Wissel tussen animaties
Maak een programma waarbij je met de pijltjestoetsen kunt wisselen tussen twee verschillende animaties.
- Druk op de linker pijltjestoets → de bal verandert van kleur
- Druk op de rechter pijltjestoets → de bal wordt groter en kleiner
In deze opdracht gebruik je het global keyword en if-statements. Ken je die nog niet? Geen zorgen:
globalheb je nodig om een variabele binnen een functie te veranderen. Meer uitleg vind je bij 4.5 Een score bijhouden.ifcheckt of iets waar is. Bijvoorbeeld:if animatie == 'kleur':voert de code eronder alleen uit alsanimatiede waarde'kleur'heeft.
Stappenplan:
- Maak een variabele
animatiemet de waarde'kleur' - Maak een functie met
@play.when_key_pressed('left')dieanimatienaar'kleur'zet (gebruikglobal animatiebovenaan de functie) - Maak een functie met
@play.when_key_pressed('right')dieanimatienaar'grootte'zet - Maak een
@play.repeat_foreverasync functie die:- Met
if animatie == 'kleur':controleert of de kleuranimatie moet draaien - Met
if animatie == 'grootte':controleert of de grootteanimatie moet draaien
- Met
Klik hier voor een tip.
Het stappenplan hierboven loopt de opzet al door. De kern is dat de animatie-functie blijft draaien en met een if kijkt welke animatie op dit moment aan de beurt is.