Turtle i Python

I Python 2 finner vi en modul som heter Turtle, som gjør det mulig å programmere geometriske mønstre og leke seg med programmeringen på en morsom og kreativ måte.

Grunnleggende bevegelser:

forward(x) x angir antall piksler bevegelse forover
back(x) x angir antall piksler bevegelse bakover
left(x) x angir grader vridning mot venstre
right(x) x angir grader vridning mot høyre
goto(x,y) sender skilpadden til koordinatet (x,y)
setheading(x) x angir retningen skilpadden peker
circle(x) tegner en sirkel med radius x
circle(x,y) tegner en sirkel med radius x over y grader

Utseende og litt annet praktisk:

penup() Ingen streker tegnes mens skilpadden beveger seg
pendown() Skilpadden tegner streker mens den beveger seg.
color('red') Velg farge på streken som tegnes.
fillcolor('blue') Velg farge på fyllet hvis man tegner en lukket figur.
begin_fill() Legges før man starter å tegne figuren.
end_fill() Legges inn for å avlutte bruk av fyllfarge.
speed(x) x angir farten på skilpadda.
hideturtle() Skjuler skilpadda.

Utfordring

Prøv å lage noen av figurene under - eller andre geometriske figurer du finner på.

Du finner løsningsforslag til hver av figurene hvis du trykker på dem.

Løkker og funksjoner i turtle:

For-løkker:

I python skrives en for-løkke på denne måten:


for i in range (6): forward(80)left(60)

Dette er en løkke der skilpadda går 80 steg forover og vrir 60 grader 6 ganger.

NB: Pass på at alt som skal inni løkka får et innrykk.

I TurtleStitch ville dette sett omtrent slik ut:

Som i TurtleStitch kan man legge løkker inne i løkker.

NB: Igjen er det innrykkene som angir hva som hører til i hvilken løkke.

, # merk at siste linje hører til den øverste løkken

Programmet vil lage denne figuren:

Lek deg videre med koden for å lage dine egne figurer, og hvis du føler for det, kan du se om du klarer utfodringen under.

Funksjoner:

Det kan være greit å være litt i gang med løkker før man begynner med funksjoner.

I python brukes funskjoner mye, da man kan "lagre" en liten kodesnutt man kan "påkalle" der det passer i programmet. Én av fordelene med funksjoner er at de kan defineres ryddig og greit øverst i programmet, slik som i eksempelet under.


def kvadrat(): # her defineres og navngis funksjonen for i in range(4): forward(50) left(90)
kvadrat () # her påkalles og kjøres funksjonen

I TurtleStitch ville dette sett omtrent slik ut:

En av de mange tingene man ikke kan gjøre enkelt med blokkprogrammering, er at man kan lage en funksjon der man definerer det som kalles for parameter.

I eksempelet under har vi definert en parameter som vi har kalt lengde. Når vi kaller på funksjonen, kan vi samtidig angi en verdi på parameteren, som så vil bli brukt i funksjonen, litt som en variabel.


def kvadrat(lengde): # merk at vi her har en parameter (lengde) for i in range(4): forward(lengde) # her brukes parameteren i funksjonen left(90)
kvadrat(50) # her tegnes et kvadrat med sider på 50

Her er det bare å leke seg litt med funksjoner videre, og når du tror du er klar, kan du prøve deg på utfordringen under.

Her er et annet eksempel på bruk av for-løkker:

Lek deg med løkker i Python, og prøv å lage noen fine mønstre.

Utfordring - løkker:

Bruk en variabel for å definere sidekanten på den ytterste trekanten og tegn deretter dette:

En variabel i python defineres på denne måten:

lengde = 50 # definerer variabelen lengde med verdi 50

Man kan regne med variabelen på "vanlig" måte:

lengde * 3 # her multipliseres lengden med 3

Hvis man vil endre variabelen, kan man gjøre følgende:

lengde = lengde/2 # her blir variabelen halvparten av det den var
# hint hint


Klikk her for løsningsforslag...

Utfordring - funksjoner:

Kan du lage en funksjon for en mangekant med to paramatere (sider, lengde). Når man påkaller funksjonen, skal man kunne oppgi antall sider og lengde på sidene i mangekanten.

En sekskant med sidekanter på 100 piksler skal med andre ord kunne "påkalles" slik:

mangekant(6,100)

while-løkker i turtle

Vi skal lære mer om while-løkker på Dag 3, men de som vil kan tjuvstarte litt her.
While-løkker fungerer slik at løkken gjentas så lenge et vilkår er oppfylt.

While-løkker:

Til forskjell fra ei for-løkke, bruker man i while-løkker en variabel som endres underveis i løkka. Så lenge løkka holder seg innenfor den angitte grensen, fortsetter løkka.


trappetrinn = 10 # definerer en variabel trappetrinn med verdi 10while trappetrinn < 100: # while-løkken vil fortsette så lenge trappetrinn-variabelen er mindre enn 100 left(90) forward(trappetrinn) right(90) trappetrinn = trappetrinn + 10

Utfordring A:

Bruk flytskjemaet til venstre som utgangspunkt for å tegne figuren under:

Utfordring B:

Bruk flytskjemaet under for å tegne figuren til høyre:

Fellesoppgave:

Denne tar vi i felleskap, så vent litt med denne...

OPPGAVE:

Lag et program der skilpadden 200 ganger skal velge tilfeldig om den skal svinge 60 grader til venstre eller høyre. Går den til venstre skal den tegne en oransje strek som er 20 steg lang. Går den til høyre skal den tegne en sort strek som er 20 steg lang.

LØSNINGSFORSLAG: Flytskjema

LØSNINGSFORSLAG: Blokker

LØSNINGSFORSLAG: Python