TurtleRace

TurtleRace - nivå 1

Til å begynne med lager vi et program som inneholder 2 skilpaddeobjekter; geir og tore. Disse objektene endrer vi egenskapene på slik at de ser ut som om de løper om kapp. Vi benytter oss av tilfeldige tall, slik at det er tilfeldig hvem som vinner.

Se videoen under for en forklaring på koden!

Ekstraoppgave: Kan du gjøre om denne koden til å gjelde fire skilpadder som skal løpe om kapp? Må programmet bli mye større?

Pyton
				import turtle as tu
from random import randint

# Oppretter objektene (skilpaddene) som skal hete geir og tore
geir = tu.Turtle()
tore = tu.Turtle()

# Endre egenskapene til geir og tore, og sette dem på start
geir.shape("turtle")
geir.color("blue")
geir.penup()
geir.goto(-300,-100)
geir.pendown()
tore.shape("turtle")
tore.color("red")
tore.penup()
tore.goto(-300,100)
tore.pendown()

# Flytte på geir og tore helt til en kommer i mål
while True:
    geir.forward(randint(0,20))
    tore.forward(randint(0,20))
    if geir.xcor() > 300 or tore.xcor() > 300:
        break

tu.mainloop()
			

TurtleRace - nivå 2

Dersom du prøvde å lage 4 skilpadder slik som vi gjorde i den forrige oppgaven, så merket du sikkert at du måtte gjenta mye kode. Det er det vi innen programmering kaller dårlig design. Vi kan endre måten vi koder på, slik at vi kan gjøre endringer på flere objekter samtidig.

Nå skal vi opprette mange skilpadde-objekter, men denne gangen skal vi legge alle disse objektene inn i en liste, slik at vi kan gjøre endringer på hele listen samtidig. Da vil vi ikke trenge å lage mer kode, selv om vi ønsker flere skilpadder.

Se videoen under for en forklaring av koden!

Pyton
				# Et program som lager et skilpaddeløp
ANT = 10
SPEED = 3
FARGER = ["red","blue","green","yellow","dark blue","dark green","gold","dark red","grey","indigo"]
#------------------------------------
import turtle as tu
from random import randint

# Oppretter objektene (skilpaddene)
turtles = []
for i in range(ANT):
    turtles.append(tu.Turtle())

# Endre egenskapene til alle skilpaddene og sette dem klare til start
for i in range(ANT):
    turtles[i].shape("turtle")
    turtles[i].color(FARGER[i])
    turtles[i].penup()
    turtles[i].goto(-300,-200 + i * 50)
    turtles[i].pendown()

# Flytte på skilpaddene helt til en kommer i mål
run = True
while run == True:
    for i in range(ANT):
        turtles[i].forward(randint(0,20))
        if turtles[i].xcor() > 300:
            run = False
            break

tu.mainloop()


			

TurtleRace - nivå 3

Når du har kommet helt hit, så har du fått testet ut mye kode. Nå vil jeg at du skal utforske litt videre på egen hånd. Se om du kan benytte deg av noen av disse funksjonene for å gjøre programmet ditt bedre:

  • turtle.write()
  • turtle.color()
  • turtle.hideturtle()
  • mm

Sjekk denne siden hvis du ønsker en utdypende forklaring på hva du kan gjøre med et turtle-objekt.

DigitAbel – for dypere læring