Skildpadde kan tegne mønstre

På denne side prøver vi at lege videre med Turtle grafik (altså skildpadden). Du vil se at meget få linjer Python-kode kan skildpadden tegne nogle meget flotte og sjove mønstre.

Drejende kasser

Det første Python kode tegner 24 kasser, som er drejet lidt hvergang. Koden er her:

# -*- coding: iso-8859-15 -*-
# Python: eks3-1-1.py
# Lad a have 2 og b have 3

import turtle

skildpadde = turtle.Turtle()

turtle.setup(width=450,height=450)
skildpadde.up()
skildpadde.setpos(0,150)
skildpadde.down()
skildpadde.speed(0)

antal_kasser = 24
drej_kasse = 360 / antal_kasser

for kasser in range(0, antal_kasser):
    for side in range(0,4):
        skildpadde.forward(100)
        skildpadde.right(90)
    skildpadde.right(drej_kasse)
    skildpadde.forward(40)


turtle.exitonclick()

Den første del af koden har du set før. Vi flytter skildpadden ind på midten med setpos()-metoden, men inden løfter skildpadden pennen så den ikke tegner en streg, som vi ikke ønsker.

Variablen antal_kasser er brugt til at gemme, hvormange kasser Python skal tegne. I den næste Python linje bliver beregnet, hvormange grader kasse skal drejes (da en cirkel er 360 grader). På den måde kan du meget let ændre, hvis du ønsker færre eller flere kasser ved kun at ændre Python kode ét sted.

Herefter er der to for løkker. Den yderste er antal kasser og den næste tegner de fire sider. Når den inderste for løkke er færdig beder vi Python om dreje tegne en kort streg og vi er klar til den næste kasse.

Python programmet laver en kasse som denne:

pic3-3-1

Den grønne spiral

Skildpadden kan også tegne en spiral. Koden er meget mere simpel, da spiralen bliver tegnet ved at forlænge længden, mens hver enkelt bliver drejet lidt. Det gør den følgende Python kode i for løkken:

# -*- coding: iso-8859-15 -*-
# Python: eks3-1-1.py
# Lad a have 2 og b have 3

import turtle

turtle.setup(width=450,height=450)

skildpadde = turtle.Turtle()
skildpadde.color("green")
skildpadde.pensize(3)

for laengde in range(0, 1000):
    skildpadde.forward(laengde / 100)
    skildpadde.right(3)

turtle.exitonclick()

Spiralen kommer til at sådan her ud.

pic3-3-2

 

Uregelmæssige streger

Hvad sker hvis du drejer skildpadden lidt mere hver gang? I dette Python program lader vi skildpadden dreje lidt mere en ret vinkel hver gang og vi får mønstret under koden.

# -*- coding: iso-8859-15 -*-
# Python: eks3-3-3.py
# Tegn et moenster

import turtle

turtle.setup(width=450,height=450)

skildpadde = turtle.Turtle()
skildpadde.color("green")
skildpadde.pensize(2)
skildpadde.speed(0)
skildpadde.penup()
skildpadde.setpos(-50,50)
skildpadde.down()

for laengde in range(0, 24):
    skildpadde.forward(200)
    skildpadde.right(105)

turtle.exitonclick()

Koden laver dette mønster:

pic3-3-3

 

Mange kanter

I det sidste Python program skal brugen bestemme, hvormange kanter skildpadden skal tegne. Prøv at se programmet her:

# Python: eks3-3-4.py
# Tegn den mange-kant brugeren vil have

import turtle

antal_kanter = int(input("Antal kanter ? "))


turtle.setup(width=450,height=450)

skildpadde = turtle.Turtle()
skildpadde.color("blue")
skildpadde.pensize(2)
skildpadde.penup()
skildpadde.setpos(-100,100)
skildpadde.pendown()

for i in range(0, antal_kanter):
    skildpadde.forward(600/(antal_kanter))
    skildpadde.right(360 / antal_kanter)

turtle.exitonclick()

Inden turtle-vinduet kommer frem spørger Python bruger om, hvormange kanter skildpadden skal tegne (med input som bliver til et heltal/int).  Derefter ændrer skildpadden farve til blå, går pennen tykkere inden den flytter til midten.

En for løkke er anvendt til at tegne antal kanter. I for løkken beder Python først skildpadden om at flytte sig 600 skridt delt med antal kanter. Det sikrer at hver side bliver kortere, når antallet af kanter bliver stort. Det betyder at skildpadden kan tegne alle kanter inden for vinduet størrelse.

I den næste Python linjer bliver skildpadden drejet lidt (360 grader delt med antal kanter).

En syv kant ser sådan ud.

pic3-3-4

Du har lært

  • At lave mønstre med skildpadden med simple for-løkker
  • Flytte skildpadden rundt, ændre farven og tykkelsen
  • At få linjer Python kode (korte programmer) kan lave mange sjove ting

 

Opgaver

  • Prøv at ændre programmet med de drejende kasser, så det kun tegner 12 kasser? Kan du få stregerne tykkere og gøre dem røde?
  • Leg med det sidste program? Hvordan ser en 2-kant ud, hvad ligner en 100 kant?
  • Prøv at lave andre mønstre ved at prøve andre metoder end dem du har lært