## Praktijk

!Let op: Als je het document de zelfde naam geeft als een van je libraries, leest je prorgamma de library niet in

## De turtle library

Als je naar projecten zoekt waarin turtle is gebruikt kom je veel verschillende projecten tegen, sommige zullen simpel lijken maar er zijn hele leuke dingen mogenlijk met turtle. Ter inspiratie een presentatie van een jongen die zich zelf heeft leren programmeren:

Als je niet het hele filmpje wil zien kun je ook naar de volgende tijden in het filmpje gaan: 4:46, 6:16, 6:40, hoewel hij aan het begin verteld waar je zijn projecten terug kunt vinden.

## Library aanroepen

Om gebruik te kunnen maken van de functies van een library moet je hem eerst importeren, zodat het Pythonscript weet welke functies Python moet aanroepen.

Het aanroepen doen we als volgt:

    >>> import turtle

De Python turtle library bevat methodes en functies die je nodig hebt om afbeeldingen te creëren.

Turtle is een grafische library, dit betekent dat we een raamwerk nodig hebben om binnen te tekenen. Dit raamwerk moet in een apart venster (screen) aangeroepen worden. In dit venster worden alle commando's die je in de code geeft uitgevoerd.

Dit ziet er als volgt uit:

Je kunt dit venster aanroepen door een variabele te maken voor dit venster.

Om het turtle venster aan te roepen gebruiken we de volgende code:

    >>> s = turtle.getscreen()

De s is de variabele, deze krijgt de waarde die wordt terug gegeven bij het aanroepen van turtle.getscreen(). Vanaf nu is de variabele s bezet. Als je de code draait gaat variabele s gaat nu een venster aanroepen die ziet er als volgt uit:

Op dit venster genaamd screen kan je de output van je code zien. In het midden zie je een driehoek deze venster is de turtle.

Als je wil dat dit scherm lang in beelt blijft kun je onder in je scherm de volgende regel zetten:

    >>> turtle.exitonclick()

Dit zorgt er voor dat het scherm zich sluit als je op het scherm klikt en het niet direct na het uitvoeren van de actie al sluit.

Om de code snel typbaar te houden gaan we voor het driehoekje in het venster (turtle) een variabele maken.

Het driehoekje wordt als turtle.Turtle aangeroepen in de library tutle. Om het kort en makkelijk te herrineren te maken noemen we hem t (je mag hem natuurlijk ook een andere naam geven):

    >>> t = turtle.Turtle()

We hebben nu je canvas (het venster) en de pen (turtle). Nu kan de turtle bewegen over het venster, je kunt hem aanpassen in formaat, kleur en bewegingssnelheid. De pijl gaat de kant op die hij op wijst (dit kun je aanpassen).

## Bewegen

Het hebben van een driehoek in je venster is leuk, maar nu willen we er ook wat mee gaan doen. Turtle kan verschillende kanten op de library van turtle bied dit ook al aan.

De turtle kan

- Vooruit .forward()
- Achteruit .backward()
- Links .left()
- Rechts .right()

Je kunt turtle laten bewegen door deze comando's te geven in combinatie van het aantal graden dat je wil dat de turtle draait.

We hebben de variabele t gemaakt waar turtle in zat, daarom kunnen we nu t koppelen aan de actie die we willen uitvoeren. Bijvoorbeeld als je wil dat turtle naar rechts gaat met een draai van 90 graden:

    >>> t.right(90)

Vervolgens willen we dat de turtle 100 pixels vooruit gaat.

    >>> t.forward(100)

Als je deze code hebt uitgevoerd zie je de lijn naar beneden gaan zoals in dit voorbeeld:

In het voorbeeld zie je ook dat de turtle netzoveel naar achter gaat als dat hij naar beneden is gegaan.

## Opdracht: Maak een vierkant met turtle.

# Voor de luie mensen onder ons de turtle library bied ook nog kortere namen aan:

- t.right() == t.rt()
- t.forward() == t.fd()
- t.left() == t.lt()
- t.backward() == t.bk()

Je kunt ook lijnen tekenen die niet vooruit of achter uit gaan maar naar een willekeurige plek die jij uit kiest. Dit wordt gedaan aan de hand van coördinaten, dit ziet er als volgt uit:

Het venster is in vier delen gedeeld. De initiele positie van je turtle is in het midden (0,0) dit wordt ook Home genoemd. Om naar een van de vier delen te gaan gebruik je .goto(). Wanner je naar rechts boven wilt gaan typ je:

    >>> t.goto(100,100)

turtle gaat naar (+x) 100 en (+y) 100

Dat ziet er als volgt uit:

Om je turtle weer terug te brengen naar de Home (0,0) positie typ je het volgende:

    >>> t.home()

Je kunt ook t.goto(0,0) typen, maar t.home is korter en je weet altijd zeker dat hij naar je begin positie brengt.

## Opdracht: Maak een driehoek met turtle. Een driehoek heeft geen hoeken van 90°, bereken de graden en pas de code daar op aan. Als dit makkelijk was kun je ook nog een poligon of een ster proberen te tekenen.

## Preset figuren

Er zijn ook vooraf geprogrammeerde figuren die in de library te vinden zijn. Je zou bijvoorbeeld niet handmatig het hele scherm willen doorlopen met turtle als je een gekleurde achter grond wil. Ook is het maken van een cirkel lastiger dan nodig is.

Achtergrond

Turtle opent altijd een scherm met een witte achtergrond, deze kleur kun je makkelijk aanpassen met turtle.bgcolor() # kleuren, net als andere voorafgedefinieerde settinges zijn in het engels.

Om de achtergrond kleur naar blauw te veranderen typ je het volgende:

    >>> turtle.bgcolor("blue")

Je kunt wat binnen de ("") valt vervangen met alle kleuren die je wilt. Ook kun je ze achter elkaar laten veranderen. Dan krijg je het volgende:

Cirkel

Het berekenen van een cirkel is extra werk, dus ook hier is een preset voor.

    >>> t.circle(60)

Het voorbeeld spreekt redelijk voor zich, turtle krijgt een cirkel met de radius van 60 pixels, dat ziet er als volgt uit:

Als je een gevulde cirkel wilt kun je dit met .dot() doen:

    >>> t.dot(20)

Turtle formaat

Om het formaat van de turtle pijl te veranderen kun je gebruik maken van de functie .shapesize(). Deze functie veranderd alleen het formaat van je pijl aan en doet niets met andere objecten die je mogenlijk ook in beeld hebt. De nummers binnen de haakjes geven het formaat wat de turtle moet aannemen. (lengte,breedte, outline)

    >>> t.shapesize(1,5,10)
    >>> t.shapesize(10,5,1)
    >>> t.shapesize(1,10,5)
    >>> t.shapesize(10,1,5)

Als je het voorbeeld over typt krijg je de output die je in de afbeelding ziet:

Turtle shape

Je hebt het formaat van de tutle aangepast, maar je kunt hem ook veranderen. De turtle library heeft verschillende vormen, waaronder de vorm van een turtle. Met de functie .shape() kun je de turtle aanpassen. Er zijn veel preset formen beschrikbaar een aantal hiervan zijn:

- Square
- Arrow
- Circle
- Turtle
- Triangle
- Classic

    >>> t.shape("turtle")
    >>> t.shape("arrow")
    >>> t.shape("circle")

Als je de code hierboven intypt krijg je het volgende:

Snelheid van de turtle

Als je vind dat de turtle te snel of langzaam gaat kun je dit ook aanpassen typ je het volgende:

    >>> t.speed(1)
    >>> t.forward(100)
    >>> t.speed(10)
    >>> t.forward(100)

Deze code heeft de snelheid in eerste instantie op normale snelheid en versneld de turtle als hij de bocht om is.

The speed can be any number ranging from 0 (the slowest speed) to 10 (the highest speed). You can play around with your code to see how fast or slow the turtle will go.

## Opdracht: Maak een cirkel die van kleur veranderd. Pas de achter grond aan. Extra: Pas de lijn en vulling apart aan. Kijk hier voor naar de volgende link. Extra: laat de cirkel bewegen over het scherm.

Turtle / pen kleur

De turtle pijl bestaat uit twee onderdelen die je kunt aanpassen. De buitenste lijn en de vulling.

!Let op: als de pijl te klein is veranderd hij niet van kleur, dus de pijl moet eerst groter gemaakt zijn.

Om de vulling te veranderen gebruiken we .fillcolor(), dit kleurt enkel de vulling en niet de buitenstelijn.

    >>> t.fillcolor("red")

De code hierboven ziet er als volgt uit:

Om de buitenste lijn te veranderen wordt de variabele .pencolor() gebruikt:

    >>> t.pencolor("green")

Deze code is groen, je kunt hem naar alle kleuren aangepast worden en komt er als volgt uit zien:

Als je dit allemaal hebt gedaan betekent dat dat je

- Een scherm kunt genereren
- Achtergronden kunt aanpassen
- Vormen kunt programmeen

Dit is een goede basis voor het maken van een spelletje.

## Links

1. https://realpython.com/beginners-guide-python-turtle/