Oppg-4-6

Øvelse 4 – Oppgave 6

På grunn av at biblioteket «turtle» ikke fungerer i jupyter over nett så må du kopiere koden over til spyder (eller ditt favoritt-IDE) for at den skal kjøre. Gjør oppgaven i IDE’et, og kopier koden tilbake hit når du har gjort den ferdig.

I denne oppgaven skal du ta utgangspunkt i programmet under. Dette programmet skal la brukeren velge om han/hun vil tegne en linje, et kvadrat, en sirkel eller en trekant, og hvilken farge figuren skal være. Ut fra valgene skal det kalles en funksjon som tegner riktig figur, med riktig farge, i vinduet som kommer opp. Programmet er basert på biblioteket turtle. Det meste av koden er allerede skrevet, men nå tegnes alle figurene når man kjører programmet, og fargene er skrevet inn i koden for hver figur. Fullfør programmet slik at brukeren kan velge én figur og angi hvilken farge den skal være.

OBS! Valgene gjøres i konsoll, ikke i vinduet som kommer opp.

OBS2! Koden for selve tegningen av figur skal ikke endres. Disse skal bare legges inn i funksjoner.

 



## Oppgave 6 svar
""" Programmet lar brukeren velge en figur som skal tegnes, og angi hvilken farge den skal være i.
 Tilgjengelige farger er: 'red','black','blue','green', og 'yellow' """

import turtle
import time

# Initierer en turle ved navn tim. Angir tim's strekbredde(pensize) og form(shape).
tim = turtle.Turtle()
tim.pensize(5)
tim.shape('arrow')

# Flytter tim til startposisjonen
tim.penup()
tim.goto(-400,0)
tim.pendown()

# Definerer funksjon for å flytte tim
def move(steps):
    time.sleep(1) # Vent 1 sekund med å flytte markøren
    tim.penup()
    tim.forward(steps) # Mottar antall pixler tim skal flyttes
    tim.pendown()

# Kode for å tegne en rett linje
tim.color('red') # Endre denne koden i alle funksjonene for å ta inn input fra bruker om farge
tim.forward(200) # Angir størrelsen (i antall pixler) på elementet som tegnes
move(50) # Flytter tim når figuren er tegnet sånn at neste figur ikke tegnes oppå den forrige

# Kode for å tegne et kvadrat og fylle det med farge
tim.begin_fill() # Starte farge-fyllingen av figuren
for i in range(4): # Loop for å tegne 4 streker
    tim.color('blue')
    tim.forward(200)
    tim.left(90) # Snur tim 90 grader for å tegne neste strek
tim.end_fill() # Avslutte farge-fyllingen av figuren
move(300)

# Kode for å tegne en sirkel og fylle den med farge
tim.begin_fill()
tim.color('green')
tim.circle(50) # Definerer radius på sirkelen
tim.end_fill()
move(200)

# Kode for å tegne en likebeint trekant og fylle den med farge
tim.begin_fill()
for i in range(3):
    tim.color('black')
    tim.left(120) # Her må tim snu 120 grader for å tegne en trekant med 60 graders vinkler
    tim.forward(100)
tim.end_fill()

# Flytter tim tilbake til startposisjonen
tim.penup()
tim.goto(-400,0)
tim.pendown()

# Forhindrer bildet fra å lukkes med en gang programmet er ferdig å tegne
turtle.getscreen()._root.mainloop()



Løsningsforslag:


## Oppgave 6 svar
""" Programmet lar brukeren velge en figur som skal tegnes, og angi hvilken farge den skal være i.
 Tilgjengelige farger er: 'red','black','blue','green', og 'yellow' """

import turtle
import time

window = turtle.Screen()

# Initierer en turle ved navn tim. Angir tim's strekbredde(pensize) og form(shape).
tim = turtle.Turtle()
tim.pensize(5)
tim.shape('arrow')

# Flytter tim til startposisjonen
tim.penup()
tim.goto(-400,0)
tim.pendown()


def main():
    figurValg = int('Hvilken figur? 1 = linje, 2 = kvadrat, 3 = sirkel, 4 = trekant.')
    farge = str(input('Hvilken farge? (red/black/blue/green/yellow)'))
    
    get_figur(figurValg,farge)

def get_figur(valg,farge):
    if valg == 1:
        tegn_linje(farge)
    elif valg == 2:
        tegn_kvadrat(farge)
    elif valg == 3:
        tegn_sirkel(farge)
    elif valg == 4:
        tegn_trekant(farge)
    

# Definerer funksjon for å flytte tim
def move(steps):
    time.sleep(1) # Vent 1 sekund med å flytte markøren
    tim.penup()
    tim.forward(steps) # Mottar antall pixler tim skal flyttes
    tim.pendown()

## Eksempel på figur-funksjon
def tegn_linje(farge):
    # Kode for å tegne en rett linje
    tim.color(farge) # Endre denne koden i alle funksjonene for å ta inn input fra bruker om farge
    tim.forward(200) # Angir størrelsen (i antall pixler) på elementet som tegnes
    move(50) # Flytter markøren unna den tegnede figuren

def tegn_kvadrat(farge):
    # Kode for å tegne et kvadrat og fylle det med farge
    tim.begin_fill() # Starte farge-fyllingen av figuren
    for i in range(4): # Loop for å tegne 4 streker
        tim.color(farge)
        tim.forward(200)
        tim.left(90) # Snur tim 90 grader for å tegne neste strek
    tim.end_fill() # Avslutte farge-fyllingen av figuren
    move(300)
    
def tegn_sirkel(farge):
    # Kode for å tegne en sirkel og fylle den med farge
    tim.begin_fill()
    tim.color(farge)
    tim.circle(50) # Definerer radius på sirkelen
    tim.end_fill()
    move(200)

def tegn_trekant(farge):
    # Kode for å tegne en likebeint trekant og fylle den med farge
    tim.begin_fill()
    for i in range(3):
        tim.color(farge)
        tim.left(120) # Her må tim snu 120 grader for å tegne en trekant med 60 graders vinkler
        tim.forward(100)
    tim.end_fill()

main()
    

# Flytter tim tilbake til startposisjonen
tim.penup()
tim.goto(-400,0)
tim.pendown()

# Forhindrer bildet fra å lukkes med en gang programmet er ferdig å tegne
#turtle.getscreen()._root.mainloop()
window.exitonclick()