Ga naar hoofdinhoud

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​

Spel laden...

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
info

In deze opdracht gebruik je het global keyword en if-statements. Ken je die nog niet? Geen zorgen:

  • global heb je nodig om een variabele binnen een functie te veranderen. Meer uitleg vind je bij 4.5 Een score bijhouden.
  • if checkt of iets waar is. Bijvoorbeeld: if animatie == 'kleur': voert de code eronder alleen uit als animatie de waarde 'kleur' heeft.

Stappenplan:​

  1. Maak een variabele animatie met de waarde 'kleur'
  2. Maak een functie met @play.when_key_pressed('left') die animatie naar 'kleur' zet (gebruik global animatie bovenaan de functie)
  3. Maak een functie met @play.when_key_pressed('right') die animatie naar 'grootte' zet
  4. Maak een @play.repeat_forever async functie die:
    • Met if animatie == 'kleur': controleert of de kleuranimatie moet draaien
    • Met if animatie == 'grootte': controleert of de grootteanimatie moet draaien
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.

Klik hier voor de oplossing.
Spel laden...