Ga naar hoofdinhoud

Stap 2: Ogen die meegroeien (rekenen met een variabele)

info

Deze stap rekent met variabelen, uit Rekenmachine.

Het hoofd heeft ogen nodig. Een oog is een stip, en die zet je met turtle.dot(). Eerst til je de pen op en loop je naar de plek van het oog:

import turtle

maat = 150

turtle.penup()
turtle.goto(maat / 4, maat * 3 / 4)
turtle.dot(maat / 5, "black")
  • turtle.penup() tilt de pen op: de schildpad loopt, maar tekent niet.
  • turtle.goto(x, y) loopt naar een punt. Het eerste getal is hoe ver naar rechts, het tweede hoe ver omhoog. Linksonder in het hoofd is (0, 0).
  • turtle.dot(maat / 5, "black") zet een zwarte stip van maat / 5 breed.

Alle getallen komen uit maat. Het oog staat op een kwart van de breedte, en op driekwart van de hoogte. Maak je het hoofd groter, dan schuift het oog mee.

Opdracht: een robotkop​

Geef het hoofd uit stap 1 twee ogen en een mond. De mond is een lijn van (maat / 4, maat / 4) naar (maat * 3 / 4, maat / 4). Zet daarna maat eens op 80: het hele gezicht moet meekrimpen.

Een lichtgrijs vierkant hoofd met twee zwarte stippen als ogen en een streep als mond

import turtle

maat = 150
kleur = "lightgray"

turtle.fillcolor(kleur)
turtle.begin_fill()
turtle.forward(maat)
turtle.left(90)
turtle.forward(maat)
turtle.left(90)
turtle.forward(maat)
turtle.left(90)
turtle.forward(maat)
turtle.left(90)
turtle.end_fill()
Klik hier voor een tip.

Het tweede oog staat op (maat * 3 / 4, maat * 3 / 4). Voor de mond loop je met de pen omhoog naar het begin, zet je de pen neer met turtle.pendown(), en loop je met goto naar het eind.

Klik hier voor de oplossing.
import turtle

maat = 150
kleur = "lightgray"

turtle.fillcolor(kleur)
turtle.begin_fill()
turtle.forward(maat)
turtle.left(90)
turtle.forward(maat)
turtle.left(90)
turtle.forward(maat)
turtle.left(90)
turtle.forward(maat)
turtle.left(90)
turtle.end_fill()

turtle.penup()
turtle.goto(maat / 4, maat * 3 / 4)
turtle.dot(maat / 5, "black")
turtle.goto(maat * 3 / 4, maat * 3 / 4)
turtle.dot(maat / 5, "black")

turtle.goto(maat / 4, maat / 4)
turtle.pendown()
turtle.goto(maat * 3 / 4, maat / 4)
turtle.hideturtle()

De laatste regel verbergt de schildpad, anders staat hij als een pijltje aan het eind van de mond.

Er gaat iets mis​

Je vergeet turtle.penup() voor het eerste oog. Dan trekt de schildpad een schuine streep van de hoek van het hoofd naar het oog.

Oorzaak: goto tekent net als forward, zolang de pen omlaag staat.

Oplossing: til de pen op vóór je naar een nieuwe plek loopt, en zet hem pas neer als je weer wilt tekenen.

Door naar het volgende project: Een verkeerslicht.