Skilpaddekunst

Introduksjon

Skilpadder (turtles på engelsk) er en form for roboter som har vært i bruk innen programmering i lang tid. Vi vil bruke skilpadde-biblioteket i Python til å utforske flere programmeringskonsepter samtidig som vi tegner kule bilder.

Steg 1: Møt skilpadden

For å bruke skilpadder i Python må vi importere et bibliotek som heter turtle. Slike biblioteker kalles modules i Python og brukes mye for å organisere og gjenbruke kode som andre har skrevet. Det finnes flere måter å importere biblioteker på i Python. Vi vil her bruke den enkleste, hvor vi starter alle skilpaddeprogrammene våre med linjen

from turtle import *

Her betyr * alt, slik at linjen sier Importer all kode fra turtle-biblioteket.

Turtles

Navnet Turtle betyr skilpadde på norsk. Bakgrunnen til dette navnet er historisk. For nesten 70 år siden bygde William Grey Walter et par roboter som kunne bevege seg rundt. Disse beveget seg ganske sakte, og var lave og skallformet. De fikk derfor etterhvert kallenavnet skilpadder.

Senere ble måten disse skilpaddene beveget seg på (vi skal se hvordan snart) tatt inn i forskjellige programmeringsspråk, spesielt som en måte å tegne på. Språket Logo er nok det som er mest kjent for slik skilpaddegrafikk, men nesten alle programmeringsspråk støtter dette i dag, inkludert for eksempel Scratch, Lua og Python.

Sjekkliste

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    

    Lagre programmet med navnet skilpadde.py og kjør det. Du skal nå få opp et nytt vindu med en gul skilpadde på en blå bakgrunn. Hvis dette ikke skjer kan du se i det opprinnelige Python Shell-vinduet om du har fått en feilmelding.

Steg 2: En kunstnerisk skilpadde

Skilpadden er ikke bare fin å se på. Den kan også tegne! I dette steget vil vi bli kjent med noen enkle kommandoer som gjør skilpadden om til en kunstner.

Sjekkliste

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    forward(200)
    
  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    forward(200)
    left(60)
    forward(50)
    backward(200)
    right(90)
    forward(100)
    

    Ser du at skilpadden utfører alle kommandoene du gir den?

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    forward(100)
    right(90)
    forward(100)
    right(90)
    forward(100)
    right(90)
    forward(100)
    right(90)
    

    Tegner skilpadden en firkant når du kjører dette programmet?

Steg 3: Gjenta deg selv

Hvis du ser på koden vi har brukt for å tegne trekanter og firkanter har vi stadig gjentatt oss selv. I stedet for at vi skriver samme kode om og om igjen kan vi be Python gjenta deler av koden. Til dette bruker vi for-løkker.

Sjekkliste

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    for i in range(4):
        forward(100)
        right(90)
    

    Endre koden din som over, og kjør programmet.

  • for i in range(4):
        forward(100)
    right(90)
    

    Hva tror du programmet ditt vil gjøre nå? Forsøk å kjøre programmet for å se om du har rett!

    Skilpadden vil bare gå fremover fire ganger før den svinger til høyre en gang til slutt. Det betyr at den vil tegne en rett linje i stedet for en firkant.

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    for i in range(3):
        forward(100)
        right(120)
    

Steg 4: Alle ting fortjener et navn

Vi skal fortsette med å gjøre koden vår enda mer fleksibel ved å gi ting navn. Dette vil også gjøre det enklere å forstå hva koden gjør.

Sjekkliste

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    sides = 4
    length = 100
    angle = 90
    
    for i in range(sides):
        forward(length)
        right(angle)
    

    Tegner programmet fortsatt en firkant?

  • angle = 360 / sides
    

    Nå kan du prøve å bare endre verdien av sides og kjøre om igjen. Tegner programmet de riktige mangekantene?

Steg 5: Egne kommandoer

I Python kan vi også lage våre egne kommandoer ved å definere funksjoner. Dette er en annen måte vi kan unngå å gjenta oss selv på.

Sjekkliste

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    def polygon(sides, length):
        angle = 360 / sides
    
        for i in range(sides):
            forward(length)
            right(angle)
    
    polygon(4, 100)
    

    Kjør programmet. Kjenner du igjen firkanten?

  • polygon(3, 100)
    polygon(4, 100)
    polygon(5, 100)
    forward(125)
    right(180)
    polygon(3, 150)
    polygon(5, 150)
    polygon(7, 150)
    

Steg 6: Skilpaddekunst

Vi vil til slutt generalisere funksjonen vår litt slik at den ikke bare tegner kjedelige mangekanter.

Sjekkliste

  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    def polylines(sides, length, angle):
        for i in range(sides):
            forward(length)
            right(angle)
    
    polylines(5, 100, 144)
    

    Kjør programmet. Hva tegner skilpadden nå?

  • polylines(91, 200, 91)
    
  • from turtle import *
    
    shape('turtle')
    shapesize(2)
    bgcolor('darkblue')
    color('yellow')
    
    def polylines(sides, length, angle):
        for i in range(sides):
            forward(length)
            right(angle)
    
    def spiral(sides, length, angle):
        for i in range(sides):
            forward(length)
            right(angle)
            length = length + 5
    
    spiral(100, 5, 125)
    

Prøv selv

Kombiner de forskjellige funksjonene vi har laget, polygon, polylines og spiral med de andre skilpadde-kommandoene du har lært som for eksempel forward og left. Klarer du å tegne enda mer spennende kunstverk? Eller kanskje du kan tegne en by? Et hus kan for eksempel lages ved først å tegne en firkant og deretter en trekant på toppen for taket.

Et tips helt på slutten er at funksjonene penup() og pendown() styrer om skilpadden tegner mens den flytter på seg. Disse er veldig nyttige når man vil tegne flere figurer som ikke henger sammen.

Et annet tips er funksjonen speed(). Denne justerer hastigheten som skilpadden tegner med. For eksempel vil speed(1) tegne veldig sakte, mens speed(11) tegner kjempefort.

Forbedre denne siden

Funnet en feil? Kunne noe vært bedre? Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!

Rapporter et problemVis koden og fiks selv