Hoofdstuk - Turtle Graphics: Functies en parameters

Uitwerkingen Opgaven

Let op: log eerst in bij repl.it
Terug naar de opgaven van Turtle Graphics-Functies en Parameters
Terug naar de extra opgaven om te oefenen met functies en parameters (met Turtle)
Terug naar de cursus pagina

Opgave Vierkant-kunst

import turtle

#De definitie voor het tekenen van een vierkant
def vierkant():
    turtle.forward(50)
    turtle.right(90)
    turtle.forward(50)
    turtle.right(90)
    turtle.forward(50)
    turtle.right(90)
    turtle.forward(50)
    turtle.right(90)


turtle.pendown()

vierkant()  #aanroep: teken de vierkant!
turtle.right(60)
turtle.pencolor("red")

vierkant()
turtle.right(60)
turtle.pencolor("blue")

vierkant()
turtle.right(60)
turtle.pencolor("yellow")

vierkant()
turtle.right(60)
turtle.pencolor("pink")

vierkant()
turtle.right(60)
turtle.pencolor("green")

turtle.done()

Opgave Huis: functies aanroepen

import turtle

#FUNCTIE DEFINITIES

#Tekent zwarte vierkant
def tekenMuren():
        turtle.forward(150)
        turtle.right(90)
        turtle.forward(150)
        turtle.right(90)
        turtle.forward(150)
        turtle.right(90)
        turtle.forward(150)

#Tekent een rood gevulde dak
def tekenDak():
        turtle.fillcolor("red")
        turtle.begin_fill()
        turtle.right(30)
        turtle.forward(150)
        turtle.right(120)
        turtle.forward(150)
        turtle.end_fill()

#HOOFDPROGRAMMA
tekenMuren()	#roep hier je functie aan om muren te tekenen
tekenDak()	#roep hier de functie aan om het dak te tekenen

turtle.done()

Opgave Dorp tekenen

import turtle

#FUNCTIE DEFINITIES

#Tekent zwarte vierkant
def tekenMuren():
	turtle.forward(150)
	turtle.right(90)
	turtle.forward(150)
	turtle.right(90)
	turtle.forward(150)
	turtle.right(90)
	turtle.forward(150)

#Tekent een rood gevulde dak
def tekenDak():
	turtle.fillcolor("red")
	turtle.begin_fill()
	turtle.right(30)
	turtle.forward(150)
	turtle.right(120)
	turtle.forward(150)
	turtle.end_fill()

#Tekent een huis bestaande uit muren en een dak
def tekenHuis():
	tekenMuren()
	tekenDak()

#HOOFDPROGRAMMA
tekenHuis()
#verplaats pen naar nieuwe plaats en in juiste richting
turtle.penup()
turtle.setposition(250, 0)
turtle.setheading(0)
turtle.pendown()

tekenHuis()
#verplaats pen naar nieuwe plaats en in juiste richting
turtle.penup()
turtle.setposition(-250, -250)
turtle.setheading(0)
turtle.pendown()

tekenHuis()

turtle.done()

Opgave Dorp aanpassen

import turtle

#FUNCTIE DEFINITIES

#Tekent zwarte vierkant
def tekenMuren( kleur ):
	turtle.fillcolor(kleur)
	turtle.begin_fill()
	turtle.forward(150)
	turtle.right(90)
	turtle.forward(150)
	turtle.right(90)
	turtle.forward(150)
	turtle.right(90)
	turtle.forward(150)
	turtle.end_fill()

#Tekent een rood gevulde dak
def tekenDak( kleur ):
	turtle.fillcolor(kleur)
	turtle.begin_fill()
	turtle.right(30)
	turtle.forward(150)
	turtle.right(120)
	turtle.forward(150)
	turtle.end_fill()

#Tekent een huis bestaande uit muren en een dak
def tekenHuis( kleur_muren, kleur_dak ):
	tekenMuren( kleur_muren )
	tekenDak( kleur_dak )

#HOOFDPROGRAMMA
turtle.speed(100) #tekenen iets sneller laten gaan :)
#teken eerste huis
turtle.pendown()
tekenHuis("yellow", "blue")
turtle.penup()

#teken tweede huis
turtle.goto(300,0)
turtle.setheading(0)
turtle.pendown()
tekenHuis( "brown", "red")
turtle.penup()

#teken derde huis
turtle.goto(-300,0)
turtle.setheading(0)
turtle.pendown()
tekenHuis( "green", "purple")
turtle.penup()

turtle.done()




Opgave Eigen creatie met functies en parameters

-- geen uitwerkingen beschikbaar --

Opgave Toren van driehoeken

-- geen uitwerkingen beschikbaar --

Extra oefening

Opgave Vierkant met parameters

import turtle

#FUNCTIE DEFINITIE
#Definitie: Instructies voor het tekenen van een vierkant met een gegeven `grootte`
def tekenVierkant( grootte ):
    turtle.forward( grootte )
    turtle.right(90)
    turtle.forward( grootte )
    turtle.right(90)
    turtle.forward( grootte )
    turtle.right(90)
    turtle.forward( grootte )
    turtle.right(90)

#HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
turtle.pendown()

tekenVierkant(100) #Aanroep: teken een vierkant van 100px.
tekenVierkant(30)
tekenVierkant(90)
tekenVierkant(250)

turtle.done()

Opgave Driehoeken met functies en parameters

import turtle

def tekenDriehoek( lengte_zijde ):
    turtle.right(30)
    turtle.forward( lengte_zijde )
    turtle.right(120)
    turtle.forward( lengte_zijde )
    turtle.right(120)
    turtle.forward( lengte_zijde )

tekenDriehoek( 200 )     # teken driehoek
tekenDriehoek( 300 )     # teken driehoek

turtle.done()

Decompositie toepassen

Je hebt in een vorige opdracht een functie geschreven om een huis te tekenen: tekenHuis(). Als je het huis verder opdeelt in logische delen zie je dat het huis uit een vierkant en een driehoek bestaat. Dit heet "decompositie".

Omdat je nu ook al geleerd hebt om met parameters te werken kun je nu logische componenten bouwen.

Opgave Huis tekenen met parameters

import turtle

#FUNCTIE DEFINITIES
#Definitie: teken zwarte vierkant
def tekenVierkant( lengte ):
    turtle.forward(lengte)
    turtle.right(90)
    turtle.forward(lengte)
    turtle.right(90)
    turtle.forward(lengte)
    turtle.right(90)
    turtle.forward(lengte)

#Definitie: teken een rood gevulde driehoek
def tekenDak( lengte, kleur ):
    turtle.fillcolor( kleur )
    turtle.begin_fill()
    # teken driehoek
    turtle.right(30)
    turtle.forward(lengte)
    turtle.right(120)
    turtle.forward(lengte)
    turtle.end_fill()


#HOOFDPROGRAMMA MET AANROEP VAN FUNCTIE
turtle.pendown()
tekenVierkant(150) #Aanroep: tekenVierkant met lengte 150
tekenDak( 150, "blue") #Aanroep: teken een blauw gevulde driehoek van lengte 150

turtle.done()

Opgave Nederlandse vlag met functies

Van de code voor het tekenen van een balk maak je een definitie:
def tekenBalk():
    turtle.forward(150)
    turtle.right(90)
    turtle.forward(40)
    turtle.right(90)
    turtle.forward(150)
    turtle.right(90)
    turtle.forward(40)
    turtle.right(90)
Die kun je dan zo aanroepen: `tekenBalk()`.
De uiteindelijke code komt er dan zo uit te zien:
import turtle

def tekenBalk():
    turtle.begin_fill()
    turtle.forward(300)
    turtle.right(90)
    turtle.forward(40)
    turtle.right(90)
    turtle.forward(300)
    turtle.right(90)
    turtle.forward(40)
    turtle.right(90)
    turtle.end_fill()

#Ga naar de beginpositie
#turtle.penup()
#turtle.goto(0, 0)

turtle.pendown()
#kleur: rood
turtle.color("red")
#teken eerste balk
tekenBalk()
turtle.goto(0, -40)
turtle.color("white")
tekenBalk()
turtle.goto(0, -80)
turtle.color("blue")
tekenBalk()

# Ga weer naar de beginpositie voor het tekenen van de omlijning
turtle.penup()
turtle.goto(0, 0)
turtle.pendown()

# kleur: zwart
turtle.color("black")
# Teken de zwarte omlijning
turtle.forward(300)
turtle.right(90)
turtle.forward(120)
turtle.right(90)
turtle.forward(300)
turtle.right(90)
turtle.forward(120)

#vlaggenmast
turtle.right(180)
turtle.forward(320)

turtle.done()

Terug naar de opgaven van Turtle Graphics-Functies en Parameters
Terug naar de cursus pagina