Les 2: Meerdere turtle's

We hebben tot nu toe de hele tijd gewerkt met precies één turtle. Maar je kan met Python meerdere turtle's gebruiken in hetzelfde programma. Die turtle's moet je dan eerst maken en elk een andere naam geven. Iets moeilijker gezegd noemen we dat: meerdere instanties maken van een turtle. Dat doen we zo:

import turtle
harry = turtle.Turtle()
harry.color("blue")       # Verander de kleur van Harry
harry.pensize(3)          # Verander de dikte van de pen van Harry
harry.forward(50)
harry.left(120)
harry.forward(50)

De naam harry hebben we even zelf bedacht. Nu kun je i.p.v. turtle.forward(100) harry.forward(100) zeggen. Maar het leuke is, dat we ook andere turtle's kunnen maken. Die moeten we dan wel een andere naam geven. Zie hieronder:

import turtle

harry = turtle.Turtle()
daisy = turtle.Turtle()

daisy.color("red")	    # Verander de kleur van Daisy
harry.color("blue")       # Verander de kleur van Harry
daisy.pensize(3)          # Verander de dikte van de pen van Daisy
harry.pensize(3)          # Verander de dikte van de pen van Harry

harry.forward(50)
harry.left(120)
harry.forward(100)

daisy.left(180)		    # Daisy draait zich eerst 180 graden om
daisy.forward(50)
daisy.right(120)
daisy.forward(100)

We hebben nu daisy in het leven geroepen. Nu kunnen ze de liefde aan elkaar verklaren door gezamenlijk een driehoek te tekenen ;)

Opdracht 1

Gebruik drie turtles om een landschap te tekenen. Ze hebben elk een andere kleur. De ene turtle is verantwoordelijk voor het tekenen van een huis. De andere voor het tekenen van de zon en weer de ander voor het tekenen van een poppetje.

event-handling

Je kunt de turtle ook laten reageren op een muisklik of een toetsaanslag. Dit soort “gebeurtenissen” worden ook wel events genoemd. Hier een voorbeeld:

import turtle
 
def vooruit ():
	turtle.forward(10)
 
turtle.onkey(vooruit,"Up")
turtle.listen()

Wat gebeurt hier nou? Allereerst hebben we een functie gemaakt genaamd vooruit () Als deze functie wordt aangeroepen dan gaat de turtle 10 pixels vooruit. Maar wanneer wordt deze functie dan aangeroepen? Nu komt het nieuwe: met de regel turtle.onkey(vooruit, “Up”) hebben we gezegd dat de functie vooruit wordt aangeroepen als je op de bijbehorende pijltjestoets drukt. Uiteindelijk moet je ook de functie listen aanroepen. Deze functie zorgt ervoor dat je programma ‘luistert’ naar de toetsaanslagen die binnenkomen.

Je kunt op dezelfde manier ook meerdere events koppelen aan zelfgemaakte functies. Stel dat je het bovenstaande programma zou willen uitbreiden met een nieuwe functie waarmee de turtle achteruit gaat. Dit zou er dan als volgt uit kunnen zien:

import turtle
 
def vooruit ():
  turtle.forward(10)
 
def achteruit ():
  turtle.backward(10)
 
turtle.onkey(vooruit,"Up")
turtle.onkey(achteruit,"Down")
 
turtle.listen()

Merk op dat we hier maar één keer de listen functie hoeven aan te roepen!

Opdracht 2

Breid het bovenstaande programma uit, zodat je met je pijltjestoetsen de turtle vrij kan laten bewegen. Met de linker en rechter pijltjestoets zou je de richting van de turtle kunnen aanpassen. Wat gebeurt er als je twee toetsen tegelijkertijd indrukt (om bijvoorbeeld schuin te bewegen)?

Last updated