Eindoefening: Het ontwerp

In deze oefening ga je een tekening maken die al voorbereid is om in Python met turtle te tekenen.
De tekening is gemaakt op ruitjespapier en is helemaal opgebouwd uit rechte lijnen en cirkels of gedeelten van cirkels.
Voor de cirkels waarvan slechts een gedeelte wordt getekend is met stippellijnen de hele cirkel getekend.
Deze cirkels geen we in stap 1 tekenen met lichtblauwe lijnen.
Die gummen we later weer uit.

Aan de zijkant en aan de onderkant zijn de coördinaten aangegeven.
Dat helpt met het schrijver van het programma dat je gaat maken.

 

De hulplijnen

				
					import turtle as t
t.speed('fast')
t.shape('turtle')
t.setup(width=900, height=750)
t.color('lightblue')

t.penup()
t.goto(100,-300)
t.pendown()
t.circle(250)

t.penup()
t.goto(-150,-300)
t.pendown()
t.circle(250)

t.penup()
t.goto(150,100)
t.pendown()
t.circle(100)
				
			

We beginnen dus met de 3 cirkels die we gaan gebruiken als hulplijnen.
Als de tekening straks klaar is wissen we de code voor de hulplijnen.

Eerst maken we wat instellingen voor het tekenen.

  • We beginnen natuurlijk met het importeren van de turtle module.
  • De snelheid zetten we hoog zodat je niet zo lang hoeft te wachten.
  • We veranderen de zorm van de pen weer in een turtle.
  • De afmetingen van tekenblad stellen we in op 900 x 750 px.
  • En de lijnkleur maken we lichtblauw.

De auto tekenen

				
					import turtle as t
t.speed('fast')
t.shape('turtle')
t.setup(width=900, height=750)
t.color('lightblue')

#hulplijnen
t.penup()
t.goto(100,-300)
t.pendown()
t.circle(250)

t.penup()
t.goto(-150,-300)
t.pendown()
t.circle(250)

t.penup()
t.goto(150,100)
t.pendown()
t.circle(100)

#de auto (klaarzetten)
t.speed('normal')
t.color('black')
t.penup()
t.goto(50,200)
t.setheading(180)
t.pendown()
#en tekenen
t.goto(-150,200)
t.circle(250,90)
t.left(90)
t.goto(350,-50)
t.left(90)
t.circle(250,56)
t.setheading(-115)
t.circle(-100,155)
				
			

Voordat we de auto gaan tekenen veranderen we een paar instellingen.

  • Omdat het fijn is om te zien wat turtle doet verlagen we op regel 24 zijn snelheid.
  • De lijnkleur wordt nu zwart gemaakt.
  • Te pen wordt opgetild enTurtle wordt naar het punt gestuurd waar hij moet beginnen met tekenen.
    Uiteraard moet hij in de juiste richting kijken.
  • Dan kan de pen neer worden neergeet en Turtle kan aan de slag!
  • Hij begint met een lijn naar links
  • Dan maakt hij een kwart cirkel (r = 250).
  • Hij draait 90 graden naar links.
  • En tekent de lijn voor de bodem.
  • Draait weer 90 graden linksom.
  • Tekent 56 graden van een cirkel (r=250).

Hier ontstaat een klein probleempje.
Turtle tekent standaard alle cirkels linksom maar het cirkeldeel dat nu getekend gaat worden moet rechtsom getekend.

  • Om dat te doen geven we een negatieve straal(r=-100)
  • De setheading(-115) en de hoek (155) zijn met trial and error gevonden.

De wielen en het nummerschild

				
					#de wielen
t.setheading(0)
t.penup()
t.goto(-200,-150)
t.pendown()
t.circle(100)

t.penup()
t.goto(150,-150)
t.pendown()
t.circle(100)

t.penup()
t.goto(-200,-100)
t.pendown()
t.circle(50)

t.penup()
t.goto(150,-100)
t.pendown()
t.circle(50)

t.penup()
t.goto(-50,25)
t.pendown()
t.circle(75)

				
			

De hulplijnen hebben we niet meer nodig. Dat stuk van de code kunnen we dus wissen.

Elk wiel bestaat uit 2 cirkels

Als de wielen klaar zijn teken je meteen ook het nummerschild op de zijkant van de auto.

 

Inkleuren en het nummer

				
					#de auto inkleuren

t.penup()
t.goto(50,200)
t.setheading(180)

t.fillcolor('red')
t.begin_fill()

t.goto(-150,200)
t.circle(250,90)

t.left(90)
t.goto(350,-50)
t.left(90)
t.circle(250,56)
t.setheading(-115)
t.circle(-100,155)
t.end_fill()

t.write("7", align="center", font=("Arial", 120, "bold"))

t.hideturtle()

				
			

Met t.fillcolor(), t.begin_fill() en t.end_fill() kun je de vormen die je getekend hebt een vulkleur geven.
De gemakkelijkste manier om ervoor te zorgen dat er geen lijn rondom de vormen is, is om de pen niet neer te zetten, maar turtle te laten tekenen met penup()
Er is dan geen lijn, maar de vulling wordt toch gemaakt.

Ik het voorbeeld zie je hoe de rode vorm nu gemaakt wordt.

  • Maak zelf de aanpassingen om ook dat wielen en het nummerschild een vulling te geven.
  • Als de auto helemaal klaar is voeg je de t.write regel toe aan het eind van het script.
  • Daarna verberg je Turtle!

De code korter maken

				
					import turtle as t
t.shape('turtle')
t.setup(width=900, height=750)
t.speed('normal')

t.penup()
t.goto(50,200)
t.setheading(180)
t.fillcolor('red')
t.begin_fill()
t.goto(-150,200)
t.circle(250,90)
t.left(90)
t.goto(350,-50)
t.left(90)
t.circle(250,56)
t.setheading(-115)
t.circle(-100,155)
t.end_fill()
#lijsten met de gegevens van de cirkels
r = [100,100,50,50,75]
x_pos = [-200,150,-200,150,-50]
y_pos = [-150,-150,-100,-100,25]
kl = ['black','black','white','white','white']
#een functie cirkels te tekenen
def cirkel(i):
    t.fillcolor(kl[i])
    t.setheading(0)
    t.penup()
    t.goto(x_pos[i],y_pos[i])
    t.begin_fill()
    t.circle(r[i])
    t.end_fill()
#een while-loop on de functie 5 keer aan te roepen
index = 0
while index < 5:
    cirkel(index)
    index = index +1

t.penup()
t.goto(-50,0)
t.setheading(90)
t.write("7",move=False, align="center", font=("Arial", 120, "bold"))

t.hideturtle()
				
			

Er worden in totaal 5 cirkels getekend voor de wielen en het nummerschild.
Elke cirkel heeft een straal(r), coördinaten (x en y) en een vulkleur.
Deze waarden zetten we in lijsten die we gebruiken in een functie.

Bestudeer de code van de functie cirkel en de while loop.
Als je het begrijpt pas je de code aan.

    Extra!
    Heb je wat tijd over?
    Teken dan een chauffeur in de auto.
    Ook die moet uit basisvormen bestaan.