5.3 Animaties met async play.repeat_forever
- 5.2 Wachten met async en await - hoe
async/awaitwerkt - 1.6 Een vorm aanpassen - eigenschappen als
colorenradiuswijzigen
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.
5.3.1 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