Rosetta og Philae. Steg 1: Skilpadden blir et romskip. Sjekkliste. Introduksjon

Like dokumenter
Vi skal nå programmere et romskip som flyr rundt på skjermen. For å ha kontroll på bevegelsen vil vi bruke to variable, fartx og

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Skilpaddefraktaler Erfaren Python PDF

Sprettball Erfaren ComputerCraft PDF

Mattespill Nybegynner Python PDF

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

Hvor i All Verden? Del 2 Erfaren Scratch PDF

Hangman. Steg 1: Velg et ord. Steg 2: Gjett en bokstav. Sjekkliste. Sjekkliste. Introduksjon

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Steg 1: Lag bakken og få den til følge med

Løpende strekmann Erfaren Videregående Python PDF

Pong. Oversikt over prosjektet. Steg 1: En sprettende ball. Plan. Sjekkliste. Introduksjon

Steg 1: Hvordan styre figurer med piltastene

Astrokatt. Introduksjon. Steg 1: En flyvende katt. Sjekkliste. Scratch. Skrevet av: Geir Arne Hjelle

Robotinvasjon Introduksjon ComputerCraft PDF

Om du allerede kjenner Scratch og har en Scratchbruker kan du gå videre til Steg 1.

Steg 1: Husker du skilpadden?

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: Geir Arne Hjelle

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang. Sjekkliste. Introduksjon

Donkey Kong. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle

Soloball. Introduksjon. Steg 1: En roterende katt. Sjekkliste. Skrevet av: Geir Arne Hjelle

Hvor i All Verden? Del 3 Erfaren Scratch PDF

Soloball. Steg 1: En roterende katt. Sjekkliste. Test prosjektet. Introduksjon. Vi begynner med å se på hvordan vi kan få kattefiguren til å rotere.

Asteroids. Oversikt over prosjektet. Steg 1: Enda et flyvende romskip. Plan. Sjekkliste. Introduksjon

Først må vi få datamaskinen til å velge et tilfeldig ord, så la oss begynne. Lagre programmet ditt og kjør det. Hvilket ord skrives ut?

King Kong Erfaren Scratch PDF

Snurrige figurer. Steg 1: En snurrig figur. Sjekkliste. Introduksjon

Legg merke til at at over de blå klossene er det flere kategorier av kommandoer i forskjellige farger, for eksempel

Steg 1: Streken. Steg 2: En hoppende helt. Sjekkliste. Sjekkliste. Introduksjon. Hei der! Hoppehelt

Snøballkrig Ekspert Scratch Lærerveiledning

Skilpaddetekst. Steg 1: Tekst på flere linjer. Sjekkliste. Introduksjon

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Bli Kjent med Datamaskinen Introduksjon ComputerCraft PDF

På tide med et nytt spill! I dag skal vi lage tre på rad, hvor spillerne etter tur merker ruter med X eller O inntil en av spillerne får tre på rad.

Mesteparten av kodingen av Donkey Kong skal du gjøre selv. Underveis vil du lære hvordan du lager et enkelt plattform-spill i Scratch.

Tre på rad mot datamaskinen. Steg 1: Vi fortsetter fra forrige gang

Hvor i All Verden? Del 2. Introduksjon. Steg 0: Forrige gang. Skrevet av: Geir Arne Hjelle

Steg 0: Installere Pygame Zero

Flagg. Introduksjon. Steg 1: Gå i sirkel. Skrevet av: Sverre Oskar Konestabo og Geir Arne Hjelle

La oss begynne enkelt. Vi vil først se hvordan vi kan flytte og snurre på en figur.

La oss begynne enkelt. Vi vil først se hvordan vi kan flytte og snurre på en figur.

Vi har sett enkle datamaskiner. Nå skal vi leke oss med roboter, og finne ut hvordan vi kan få dem til å gjøre forskjellige ting for oss.

Labyrint Introduksjon Scratch Lærerveiledning. Steg 1: Hvordan styre figurer med piltastene

Steg 1: Tekst på flere linjer

Hvor i All Verden? Del 1. Introduksjon. Steg 1: Styr et helikopter. Skrevet av: Geir Arne Hjelle

Snøballkrig. Introduksjon. Steg 1: En snøballkaster. Skrevet av: Geir Arne Hjelle

Asteroids. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle

Flagg Erfaren Scratch Lærerveiledning

Kanter, kanter, mange mangekanter

Snake Expert Scratch PDF

Hvor i All Verden? Del 3. Introduksjon. Steg 0: Forrige gang. Sjekkliste. Skrevet av: Geir Arne Hjelle

Steg 1: Hente grafikk fra nettet

Sprettball. Introduksjon. Skrevet av: Geir Arne Hjelle

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Hoppehelt. Introduksjon. Steg 1: Streken. Sjekkliste. Skrevet av: Geir Arne Hjelle

PXT: Det regner mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes

Start et nytt Scratch-prosjekt. Slett kattefiguren, for eksempel ved å høyreklikke på den og velge slett.

Spøkelsesjakten. Steg 1: Lag et flyvende spøkelse. Sjekkliste. Introduksjon

Straffespark Introduksjon Scratch Lærerveiledning

Steg 1: Katten og fotballbanen

Skilpadder hele veien ned. Steg 1: Tegn et fjell. Sjekkliste. Introduksjon. Hent frem skilpaddene dine, åpne IDLE, det er på tide å tegne igjen.

Bursdag i Antarktis Nybegynner Scratch PDF

3D-Flakser, Del 1 Ekspert Scratch PDF

Det du skal gjøre i denne oppgava er først å sette opp bakgrunnen til spillet og så rett og slett å få firkanter til å falle over skjermen.

Steg 1: Vår første datamaskin

Stjerner og galakser Nybegynner Python PDF

ToPlayer. Steg 1: Kom i gang med metodene setup og draw. Gjør dette: Introduksjon:

Tryll bort heksa. Introduksjon. Sjekkliste Følg instruksjonene på lista. Huk av etter hvert. Test. Lagre 2/8

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Skrevet av: Geir Arne Hjelle

Breakout. Introduksjon. Oversikt over prosjektet. Skrevet av: Geir Arne Hjelle og Martin Lie

Norgestur. Introduksjon. Steg 1: Et norgeskart. Sjekkliste. Scratch. Skrevet av: Geir Arne Hjelle

Skilpadder Introduksjon Python PDF

Kan micro:biten vår brukes som en terning? Ja, det er faktisk ganske enkelt!

Tetris. Introduksjon. Skrevet av: Kine Gjerstad Eide. Lag starten på ditt eget tetris spill!

Skilpadder hele veien ned

Skilpadder hele veien ned

Steg 1: Lag en figur som bytter drakt

Hendelser Apprentice ComputerCraft PDF

Enarmet banditt Nybegynner Scratch Lærerveiledning

Her skal du lære å programmere micro:biten slik at du kan spille stein, saks, papir med den eller mot den.

Bygge en pyramide. Steg 1: Lage en ny mod. Sjekkliste. Introduksjon

For å sjekke at Python virker som det skal begynner vi med å lage et kjempeenkelt program. Vi vil bare skrive en enkel hilsen på skjermen.

I denne oppgåva skal me lage eit enkelt spel der pingvinane har rømt frå akvariet i Bergen. Det er din (spelaren) sin jobb å hjelpe dei heim att.

Øvingsforelesning 1 Python (TDT4110)

PXT: Himmelfall. Introduksjon. Skrevet av: Helene Isnes og Julie Revdahl

Steg 1: Klargjør og importerer bilioteker

PGZ - Hangman Ekspert Python Lærerveiledning

ToPlayer. Introduksjon: Skrevet av: Ruben Gjerstad Eide og Kine Gjerstad Eide

Øvingsforelesning i Python (TDT4110)

Steg 1: Lag et flyvende spøkelse

Bygge en pyramide. Introduksjon. Steg 1: Lage en ny mod. Sjekkliste. Skrevet av: Pål G. Solheim

Hangman. Level. Introduksjon

Introduksjon til ComputerCraft Introduksjon ComputerCraft PDF

Steg 1: Bli kjent med spillet

Felix og Herbert Introduksjon Scratch PDF

Repetisjon Novice Videregående Python PDF

Verden - Del 2. Steg 0: Oppsummering fra introduksjonsoppgaven. Intro

Prøveeksamen IN1000. IN Prøveeksamen. Dato november 2017 Tid 12:30-12:00 Alle trykte og skrevne hjelpemidler er tillatt.

Transkript:

Rosetta og Philae Erfaren Python PDF Introduksjon Romsonden Rosetta ble sendt ut av Den Europeiske Romfartsorganisasjonen (ESA) for å utforske kometen 67P/Tsjurjumov- Gerasimenko. I november 2014 sendte Rosetta ut landingsfartøyet Philae som landet på selve kometen. Vi skal i denne leksjonen bruke skilpaddegrafikk til å lage et enkelt spill hvor målet er å styre Philae slik at det lander perfekt på kometen. Steg 1: Skilpadden blir et romskip Vi skal nå bruke skilpadden som om den er et romskip. Vi begynner enkelt med å tegne skilpadden på skjermen. Start et nytt Python-prosjekt, og skriv inn følgende kode: import turtle def tegn_romskip(): turtle.penup() turtle.shapesize(4) turtle.setpos(200, 400) turtle.setheading(90) turtle.color('blue') tegn_romskip() input('trykk Enter') Lagre programmet med navnet rosetta.py. Kjør programmet ditt. Skjønner du hva som skjer? Vi har laget èn funksjon, tegn_romskip, som gjør trekanten større, flytter den til toppen av skjermen, roterer den og fargelegger den mørkeblå. Dette vil være romskipet vårt. Linjen input('trykk Enter') har vi lagt til for at ikke turtle-vinduet skal bli borte med en gang. Prøv å ta vekk denne linjen for å se hva som skjer.

Vi vil også lage en bakgrunn som ligner litt på en komet. Legg til denne funksjonen før def tegn_romskip() : def tegn_bakgrunn(): turtle.bgcolor('black') turtle.speed(11) turtle.pensize(10) turtle.penup() turtle.setposition(-400, -300) turtle.pendown() turtle.color('grey') turtle.forward(800) Legg også inn et kall til denne nye funksjonen tegn_bakgrunn() rett før tegn_romskip() blir kalt. Kjør programmet ditt. Tegnes også en enkel bakgrunn? Endre gjerne litt på de forskjellige tallene og verdiene i koden over, slik at du skjønner hva de forskjellige kommandoene gjør. Kanskje du kan lage en enda bedre bakgrunn? Steg 2: Romskipet faller mot kometen La oss begynne med å legge på litt effekt av gravitasjonen, slik at romskipet faller ned mot kometen. Først lager vi en variabel som sier hvor sterk gravitasjonseffekten er. Legg denne nesten helt øverst i programmet ditt, rett under import turtle, slik at den er lett å finne igjen senere. gravitasjon = -0.01 Vi starter med en ganske liten gravitasjonseffekt. Pass på at den er negativ, slik at romskipet vil falle nedover. Vi vil også trenge en beskrivelse av tilstanden til romskipet. I praksis vil dette i denne omgang være hvor fort romskipet beveger seg. Legg til disse linjene rett under definisjonen av gravitasjon. romskip = { 'fart_x': 0.1, 'fart_y': 0.5 } romskip er her en dict ( dict er en forkortelse for dictionary, eller ordbok). Dette er en veldig nyttig datastruktur i Python, som gjør det lett å samle variabler som hører sammen. Vi kan hente ut verdiene for eksempel ved romskip['fart_x']. Vi kan nå skrive koden som flyr romskipet. Legg til denne funksjonen etter definisjonen av tegn_romskip(). def fly_romskip(): while True: x, y = turtle.position() if y < -270: return romskip['fart_y'] += gravitasjon turtle.setposition(x + romskip['fart_x'], y + romskip['fart_y']) Legg også inn et kall til fly_romskip() etter kallet til tegn_romskip(). Kjør programmet. Faller romskipet ditt ned mot kometen? Stopper romskipet når det kommer til bakken? Prøv å endre verdiene for gravitasjon, fart_x og fart_y. Hvordan endrer dette bevegelsen til romskipet? Hva gjør tallet -

270 i koden? Hva skjer om du forandrer dette? Den viktigste koden for å flytte romskipet er linjene romskip['fart_y'] += gravitasjon turtle.setposition(x + romskip['fart_x'], y + romskip['fart_y']) Skjønner du hvordan disse fungerer? Først endrer vi den vertikale hastigheten ( fart_y ) basert på effekten av gravitasjonen. Deretter flytter vi romskipet så langt som farten tilsier. Steg 3: Vi styrer romskipet! Vi skal nå se hvordan vi kan bruke piltastene til å styre romskipet. For at Python skal oppdage at vi trykker på en tast skal vi bruke noe som kalles hendelser (events på engelsk). I turtlebiblioteket finnes flere typer hendelser. Vi skal bruke noen som heter onkey. La oss begynne enkelt ved å vri romskipet mot høyre når den høyre piltasten trykkes. Lag først en enkel funksjon som snur romskipet mot høyre: def snu_hoyre(): turtle.right(5) Nå må vi fortelle Python at vi vil at denne funksjonen skal kobles til høyre piltast. Legg til disse linjene nederst i tegn_romskip -funksjonen: turtle.onkey(snu_hoyre, 'Right') turtle.listen() Den andre linjen forteller Python at den må lytte etter hendelser. Kjør programmet ditt. Snur romskipet seg mot høyre om du trykker høyre piltast? Skriv nå tilsvarende kode som kan snu romskipet mot venstre. Dette klarer du selv! Til slutt vil vi bruke pil-opp-tasten for å gi romskipet vårt litt fart. Når vi trykker pil-opp skal romskipet få litt fart i den retningen det peker. Siden vi holder styr på farten i x - og y -retning separat, må vi fordele denne akselerasjonen. Til dette kan vi bruke matematikk-funksjonene sinus og cosinus. Sinus og cosinus er en del av math -biblioteket i Python, slik at vi må importere dette først. Legg til denne linjen helt øverst, sammen med import turtle. import math

Legg så til en ny funksjon, bruk_motor : vinkel = turtle.heading() * math.pi / 180.0 romskip['fart_x'] += math.cos(vinkel) romskip['fart_y'] += math.sin(vinkel) En liten ekstra komplikasjon i denne koden er at turtle - og math -bibliotekene regner med vinkler litt forskjellig. turtle bruker grader, mens math bruker radianer. For å bytte fra grader til radianer har vi ganget vinkelen med pi og delt på 180. Til slutt må vi si at bruk_motor skal kalles når vi trykker pil-opp. Legg til denne linjen sammen med de andre onkey -linjene: turtle.onkey(bruk_motor, 'Up') Prøv spillet ditt igjen. Klarer du å styre romskipet ditt rundt på skjermen? Vær forsiktig slik at du ikke forsvinner i verdensrommet! Steg 4: Klarer vi å lande trygt? Avslutningsvis skal vi lage en base på kometen hvor vi vil at romskipet skal lande. Vi begynner med å tegne opp et felt hvor vi vil at romskipet skal lande. Bytt ut linjen turtle.forward(800) i funksjonen tegn_bakgrunn med linjene turtle.forward(200) turtle.color('red') turtle.forward(200) turtle.color('grey') turtle.forward(400) Om du kjører programmet igjen vil du se en rød base på kometen. Vi vil nå sjekke at landingen er bra. Skriv følgende funksjon, def sjekk_landing(): x = turtle.xcor() if x < -200 or x > 0: print('du landet utenfor basen!') def sjekk_landing(): x = turtle.xcor() vinkel = turtle.heading() if x < -200 or x > 0: print('du landet utenfor basen!') elif abs(vinkel - 90) > 10: print('du landet skjevt!') elif romskip['fart_y'] < -1: print('du landet for hardt!') else: print('perfekt landing!') Prøv spillet ditt igjen. Test at alle de fire forskjellige meldingene virker som de skal!

Prøv selv Da er vi ferdig med et enkelt kometlander-spill. Den virkelige Rosetta og Philae-operasjonen var nok litt mer komplisert! Prøv gjerne å videreutvikle spillet ditt. Her er noen ideer: Kan du la utgangsposisjonen og farten til romskipet være tilfeldig? Se på funksjonen randint() fra random -biblioteket. Kanskje du kan regne ut en poengsum etter landingen? For eksempel basert på hvor hardt man lander, og hvor lang tid man bruker på landingen. For å ta tiden kan du se på funksjonen time() i time -biblioteket. Kanskje du kan la spilleren automatisk få en ny sjanse dersom han krasjer? Kan du begrense akselerasjonen (se i bruk_motor -funksjonen) slik at man ikke så lett forsvinner ut i verdensrommet? Lisens: CC BY-SA 4.0 Forfatter: Geir Arne Hjelle