Ga naar hoofdinhoud

5.1 Wachten in je spel

Hier bouw je op verder: Modules importeren

Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.

Soms wil je een pauze in je spel. Bijvoorbeeld om een object even te laten wachten voordat het weer verdergaat. Een veelgebruikte functie in Python is time.sleep(). In een play-programma pakt die alleen anders uit dan je verwacht.

Op deze pagina ontdek je waarom time.sleep() vaak niet het gewenste effect heeft. Wil je meteen de juiste oplossing zien? Ga dan direct naar de volgende pagina.

We beginnen met een bewegende bal.

Spel laden...

Wachten met time.sleep​

We gaan nu proberen om de bal tijdelijk sneller te laten bewegen bij een muisklik. Je meest logische gedachte is misschien om time.sleep te gebruiken:

Spel laden...

Gaat de bal sneller bewegen? Wat gebeurt er eigenlijk?

@play.when_mouse_clicked
def tijdelijk_sneller():
...

Wanneer de muis geklikt wordt:

  • def tijdelijk_sneller(): voeren we deze functie uit
  • bal.physics.x_speed = 1000 we veranderen de snelheid van de bal. Via bal.physics kun je achteraf fysica-eigenschappen zoals x_speed en y_speed aanpassen
  • time.sleep(1) we wachten een seconde
  • bal.physics.x_speed = 10 we geven de bal een lage snelheid

Het probleem is dat time.sleep het hele spel op pauze zet. Dat werkt dus niet.

Opdracht 5.1.a: Zelf ervaren​

Voer de code met time.sleep() hierboven uit. Klik met je muis in het scherm.

Wat merk je op?

Klik hier voor de oplossing.

Het hele scherm bevriest voor 1 seconde. De bal staat stil, je kunt niks doen. Dat is niet wat we willen in een spel.

De reden: time.sleep() blokkeert het hele programma, inclusief het tekenen van het scherm en het verwerken van muisklikken.

Op naar iets dat wel werkt.