#Et simpel turtle program
from turtle import *
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
Resultat
Det koden siger er:
De simple kommandoer er her:
Kommando | Resultat | Alternativer |
---|---|---|
forward() | Fremad - længden angives i parantesen | fd() |
backward() | Tilbage - længden angives i parantesen | bd() | back() |
left() | Til venstre - vinklen angives i parantesen | lt() |
right( *værdi*) | Til højre - vinklen angives i parantesen | rt() |
Lad os tegne en simpel cirkel
#cirkelbue
from turtle import *
circle(100)
Herunder kan du se hvad der sker.
Tallet i parantesen angiver afstanden til cirkelens centrum vinkelret på retning markøren har.
Man kan tegne en mindre del af cirkelbuen ved at sætte et komma, og tilføje antallet af grader.
90° | 180° | 270° |
---|---|---|
|
|
|
![]() |
![]() |
![]() |
Herunder er eksempel hvor jeg tegner en linie, med en cirkelbue på midten:
#eksempel med cirkelbue
from turtle import *
forward(100)
right(90)
circle(50,180)
right(90)
forward(100)
Dette kan være et god redskab til at træne afstands og vinkelforståelse.
Man kan anvende det til at træne
- koordinatsystem
- Afstandforståelse
- Vinkler
- målestoksforhold
Cirkelfunktionen kan også bruges til at tegne polygoner
#tegne trekant med cirkelfunktionen
from turtle import *
circle(100,360,3)
Firkant | Femkant | Sekskant |
---|---|---|
|
|
|
![]() |
![]() |
![]() |
I starten lavede vi et kvadrat. Det kan gøre smartere, end vi gjorde det.
Lad os kigge på koden en gang til:
#kode før gentagelse (for i in ...)
from turtle import *
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
forward(100)
left(90)
Læg mærke til at at vi gentager de to linier med forward og left 4 gange efter hinanden.
Det kan vi skrive på følgende måde:
#kode med gentagelse
from turtle import *
for i in range(4):
forward(100)
left(90)
Kodestumpen for i in range(4) gør, at alt der står under den bliver gentaget 4 gange.
Læg mærke til at for i in range(4) bliver afsluttet af et kolon, og at de kommandoer der skal gentages er rykket ind under linien.
Her er det gjort med Tab, men det kan også fin gøres med mellemrum
Det kan vi udnytte til at lave drejninger med. Se nedenstående kode:
#kode hvor figur drejes
from turtle import *
for i in range(8):
for i in range(4):
forward(100)
left(90)
right(45) #da 360/8=45
Det koden siger er:
Gentag følgende 8 gange.
Vi kan endda få Python til at regne for os. Lad os lave en kode der drejer firkanten 17 gange før den når "tilbage".
#drejning af firkant 17 gange
from turtle import *
for i in range(17):
for i in range(4):
forward(100)
left(90)
right(360/17)
Som du kan se i den sidste linie, så får vi Python til selv at beregne hvor mange grader den skal dreje firkanten for at komme "hele vejen rundt" ved at skrive right(360/17).
En sidste funktion vi skal have dækket er goto(). Med denne kommando kan vi lade "turtlen" springe til et koordinatsæt, uden at bekymre os om hverken afstand eller vinkel.
Se eksempelt herinder hvor jeg tegner et hus
# kode med goto funktion
from turtle import *
forward(200)
left(90)
forward(100)
goto(100,150) #Her starter taget
goto(0,100) #Her slutter taget
left(180)
forward(100)
Kommando | Resultat | Alternativ |
---|---|---|
pensize() | Stregens tykkelse | width() |
penup() | Løfter pennen (ingen streg) | pu() | up() |
pendown() | Sætter penne ned (laver streg) | pd() | down() |
speed() | Cursorens hastighed. 3 er normal hastighed, 11+ er meget hurtigt | |
undo() | Fjern sidste kommando |
Her er et eksempel:
#kode med eksempler på penkontrol
from turtle import *
forward(100)
pensize(10) #sæt størrelse til 10
forward(100)
pensize(2) #sæt størrelse til 2
forward(100)
penup() #løft pennen
forward(100)
pendown() #sæt pennen ned igen
forward(100)
Resultat
Herunder vil det blive vist hvordan man farvelægger sine værker. Mange farver kan man få ved at angive deres navn mellem to situationstegn
"white" | "grey66" | "grey33" | "black" |
"red1" | "red2" | "red3" | "red4" |
"orange1" | "orange2" | "orange3" | "orange4" |
"yellow1" | "yellow2" | "yellow3" | "yellow4" |
"green1" | "green2" | "green3" | "green4" |
"blue1" | "blue2" | "blue3" | "blue4" |
Du kan få et overblik over farvenavne her: https://www.tcl.tk/man/tcl/TkCmd/colors.htm
For at farvelægge stregen anvender man pencolor(*farvenavn*):
#ændre stregfarven
from turtle import *
pensize(5)
pencolor("red1") #ændr farven til red1
circle(100)
For at farvelægge ens konstruktioner, skal man gøre to ting:
# udfyld figur
from turtle import *
pensize(5)
fillcolor("red1") #farve på indholdet
begin_fill() #Start med at fylde ud
circle(100)
end_fill() #Slut med at fylde ud
Hvis man både skal bruge en streg- og en fyldfarve, kan man anvende funktionen color(). I parantesen angiver man streg- og fyldfarven adskilt af et komma: color(*stregfarve*,*fyldfarve*)
#anvendelse af color funktionen
from turtle import *
pensize(5)
color("red1", "green1")
begin_fill()
circle(100)
end_fill()
Hvis man kun skriver en farve i color, f.eks. color("red1"), så bliver både stregen og fyldes samme farve.
#anvendelse af color funktionen til at sætte fælles farve for streg og indhold
from turtle import *
pensize(5)
color("blue1")
begin_fill()
circle(100)
end_fill()
Man er ikke begrænset af de farver som defineret er i TK farvesættet. Man kan også vælge at angive den hexadecimale kode for en farve. f.eks:
Man angiver koden ved at et # og en seks-cifret kode derefter f.eks:
#eksempel på selvvalgte farver
from turtle import *
pensize(20)
color("#FF8C00")
forward(200)
color("#808000")
forward(200)
color("#00BFFF")
forward(200)
Du kan finde flere farver her: https://www.google.com/search?q=colorpicker&oq=colorpicker
Farven aflæses til venstre og du finder din farve ved at flytte rundt på cirklen og skyderen neden under.
Variabler bruges til at gemme værdier i. I denne sammnhæng vil vi bruge det til at gøre koden mere læselig. Se nedenstående eksempel:
#brug af variabler i kode 01
from turtle import *
længde = 200
vinkel = 90
for i in range(4):
forward(længde)
left(vinkel)
Det er en metode vi kan bruge til to ting:
Herunder har jeg lavet et program, der ud fra længde og n kanter tegner en polygon
#brug af variabler i kode 02
#tegn en n-kant (polygon)
from turtle import *
længde = 100
antal_kanter = 7
for i in range(antal_kanter): #koden skal køre antal_kanter gange
forward(længde)
left(360/antal_kanter) #drej med 360° divideret med antal_kanter
Regler for for variabler
- Variabelnavne skal starte med bogstaver eller _ (underscore):
Eksempler: længde, bredde, _første
- Variabel navne må ikke være funktioner i Python eller din kode:
Eksempler: import, from, for, in, range ...
- Variabelnavne er case-sensitive (store/små bogstaver)
Antal og antal er to forskellige variabler
Gode råd
- Brug beskrivende variabelnavne og adskild med _ (underscore) hvis der er flere ord
Eksempler: antal_forsøg, start_værdi
- Brug kun små bogstaver til variabelnavne
- Brug aldrig æ, ø og å hvis koden skal anvendes internationalt.
HVis man ved man skal tegne den samme figur flere gange kan man lave figuren som funktion. Forestil dig at vi skal tegne mange firkanter, men de er lidt forskellig størrelse.
# Eksempel på funktion
from turtle import *
def firkant(længde,bredde): #laver funktionen firkant
for i in range(2):
forward(længde)
left(90)
forward(bredde)
left(90)
pensize(5)
firkant(300,150) # den anden firkant 300 * 150
pencolor("red1")
firkant(200,100) # den anden firkant 200 * 100
pencolor("orange1")
firkant(100,50) # den første firkant 100 * 50
På mange måder minder dette om det vi gjorde ovenfor i variabler. Vi kan omskrive programmet der tegner polygoner på følgende måde:
#Omskrivning af polygonkode fra variabel afsnittet
from turtle import *
def polygon(længde, antal_kanter):
for i in range(antal_kanter): #koden skal køre antal_kanter gange
forward(længde)
left(360/antal_kanter) #drej med 360° divideret med antal_kanter
pensize(5)
pencolor("red1")
polygon(100,7) #første polygon
forward(200)
pencolor("green1")
polygon(70,5) #anden polygon
forward(170)
pencolor("blue1")
polygon(60,9) #tredie polygon
https://opentechschool.github.io/python-beginners/en/simple_drawing.html