Ø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()