Stap 2: Ogen die meegroeien (rekenen met een variabele)
Deze stap rekent met variabelen, uit Rekenmachine.
Het hoofd heeft ogen nodig: stippen, net als op de dobbelsteen.
Het nieuwe is dat je de plek niet met vaste getallen opschrijft, maar
uitrekent met maat:
import turtle
maat = 150
turtle.penup()
turtle.goto(maat / 4, maat * 3 / 4)
turtle.dot(maat / 5, "black")
Linksonder in het hoofd is (0, 0), net als bij de dobbelsteen. Alle
getallen komen uit maat: het oog staat op een kwart van de breedte en op
driekwart van de hoogte, en de stip is maat / 5 breed. Maak je het hoofd
groter, dan schuift het oog mee en groeit het 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.
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.
Maak het je eigen
Alles wat je nu aan de robot toevoegt, reken je ook uit met maat. Dan
groeit het mee als je het hoofd groter maakt.
- Zet een antenne op het hoofd: een lijn vanaf het midden van de bovenkant, met een rode stip erop.
- Kies de kleur van de ogen met een variabele
oogkleur, en kijk hoe de robot verandert als je de ogen half zo groot maakt. - Geef hem oren: twee kleine vierkanten aan de zijkanten van het hoofd.
- Zet een tweede robot naast de eerste, in een andere kleur en maat. Geef
het hoofd een plek
x: loop met de pen omhoog naar(x, 0)voordat je het vierkant tekent, en telxop bij de x van de ogen en de mond. Kopieer daarna het hele programma onder zichzelf, en geefx,maatenkleurnieuwe waarden. Dat wordt een lang programma, met twee keer bijna hetzelfde erin.
Door naar het volgende project: Een verkeerslicht.