Steg 0: Installere Pygame Zero

Like dokumenter
I denne oppgaven skal vi gi en enkel innføring til klasser og objekter (ordene forklares senere i teksten).

Løpende strekmann Erfaren Videregående Python PDF

Sprettende ball. Introduksjon: Steg 1: Vindu. Sjekkliste. Skrevet av: Sigmund Hansen

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

Hvor gammel er du? Hvor gammel er du? Del 1: Skrive ut til skjerm. Gjøre selv. Skrevet av: Sindre O. Rasmussen, Kodeklubben Trondheim

Sprettende ball Introduksjon Processing PDF

Steg 1: Hvordan fungerer spillet?

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

Steg 1: Tekst på flere linjer

Ping pong. Introdusjon: Steg 1: Sprettende ball. Sjekkliste. Skrevet av: Torbjørn Vik Lunde

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

Kanter, kanter, mange mangekanter

Uendelig bakke. Introduksjon. Skrevet av: Kine Gjerstad Eide

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.

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

Steg 1: Hvordan styre figurer med piltastene

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

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

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

Finn en partner å prøve spillet sammen med. Det er OK å være tre personer og bytte på hvilke to som spiller.

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

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

"Dette skjer når jeg trykker på denne knappen" "Når jeg skriver i dette feltet, ser jeg at det andre forandrer seg"

I denne oppgaven skal vi repetere litt Python-syntaks, det er en god blanding av alle tingene du har lært i Python til nå.

Steg 1: Katten og fotballbanen

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

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

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

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

Steg 1: Animasjons-attributtet

Tell sekunder. Introduksjon. Skrevet av: Teodor Heggelund. I denne oppgaven skal vi lage vårt eget spill!

Hver ting i en liste kalles et element. En liste lages ved å skrive elementer inni [], med, mellom elementene:

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.

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

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

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

Sprettball Erfaren ComputerCraft PDF

Farger. Introduksjon. Skrevet av: Sigmund Hansen

Steg 1: Piler og knappetrykk

Ping pong. Steg 1: Sprettende ball. Sjekkliste. Introdusjon:

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

Start et nytt PXT-prosjekt, for eksempel ved å gå til makecode.microbit.org (

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

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

PGZ - Hangman Ekspert Python Lærerveiledning

Steg 1: Opprette spillskjerm

Bygg et Hus. Introduksjon. Steg 1: Prøv selv først. Skrevet av: 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.

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

I denne oppgaven skal vi gjøre enkle operasjoner på tekst, som å endre størrelsen på bokstavene og telle ord.

Skrevet av: Oppgaven er laget av GDG Bergen ( AU/GDGBergen/), og tilpasset Kodeklubbens format på oppgaver.

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

Lærerveiledning - Flagg

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

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

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

Lærerveiledning - Snøballkrig

Lærerveiledning - Straffespark

Husk at du skal ha to vinduer åpne. Det ene er 'Python Shell' og det andre er for å skrive kode i.

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

Hendelser Apprentice ComputerCraft PDF

Lærerveiledning - Pong

Kan micro:biten vår brukes som et termometer? Ja, den har faktisk en temperatursensor!

Tegnespillet. Introduksjon:

Steg 1: Vi starter fra toppen

Steg 1: En første animasjon

Lærerveiledning - Snøballkrig

7-Segment Display. Introduksjon. Steg 1: Finn frem utstyr. Til denne oppgaven trenger du. Skrevet av: Martin Ertsås & Morten Minde Neergaard

Steg 1: Rest etter divisjon

Hendelser. Introduksjon. Steg 1: Skattejakt. Skrevet av: Geir Arne Hjelle

Kodetime for Nordstrand barneskole

PXT: Micro:bit repeater

Skilpaddekunst. Introduksjon. Skrevet av: Geir Arne Hjelle

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

Steg 1: Vår første datamaskin

PXT: Flasketuten peker på

Steg 1: Husker du skilpadden?

Sprettball. Introduksjon. Skrevet av: Geir Arne Hjelle

Steg 1: Få noe på skjermen

Straffespark Introduksjon Scratch Lærerveiledning

PXT: Tikkende bombe. Introduksjon. Steg 1: Vi starter spillet. Skrevet av: Kolbjørn Engeland

3. Introduksjon til prosjektet Hringr. Scratch fra scratch Enkel programmering for nybegynnere

Denne oppgaven viser hvordan vi kan bruke musen til å kontrollere elm-programmene våre.

Hash-funksjoner. Introduksjon. Steg 1: Strekkoder. Eksempel. Skrevet av: Martin Strand

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

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

PXT: Det regnar mat! Introduksjon. Steg 1: Grunnlag. Sjekkliste. Skrevet av: Helene Isnes. Oversatt av: Stein Olav Romslo

Steg 1: Canvas-elementet

PXT: Bjelleklang. Introduksjon. Skrevet av: Kolbjørn Engeland, Julie Revdahl

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

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

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.

Bildebehandling med Python og EzGraphics

Kryptering med vigenere-metoden

Hvor i All Verden? Del 3 Erfaren Scratch PDF

Repetisjon Novice Videregående Python PDF

Verden. Steg 1: Vinduet. Introduksjon

Transkript:

PGZ - Sprettball Skrevet av: Ole Kristian Pedersen, Kodeklubben Trondheim Kurs: Python Tema: Tekstbasert, Spill Fag: Matematikk, Programmering Klassetrinn: 5.-7. klasse, 8.-10. klasse Introduksjon I denne oppgaven skal du lage en ballanimasjon, ved hjelp av det du har lært i oppgaven om enkle objekter (../enkle_objekter/enkle_objekter.html), samt Pygame og Pygame Zero. Dersom du ikke husker objekter, kan du gå tilbake (../enkle_objekter/enkle_objekter.html) og raskt repetere. Steg 0: Installere Pygame Zero For å gjøre denne oppgaven må du installere Pygame Zero (https://pygamezero.readthedocs.io/en/latest/installation.html). Start med å sjekke at du har installert Python 3, altså at Python-versjonen din er nummerert på formen 3.X.X. Åpne kommandolinjen (engelsk: command prompt) på datamaskinen din. Bruker du Windows kan du åpne start-menyen og skrive cmd (eventuelt Ledetekst, som er det norske navnet på programmet som skal kjøre). På Mac og Linux åpner du terminalvinduet. Skriv inn følgende: Windows og Mac: pip install pgzero Linux: sudo pip install pgzero Noen Linux-systemer kaller den pip3, i så fall må du skrive det i stedet for pip i koden over. Hvis pip ikke er installert kan du prøve å skrive sudo python3 -m ensurepip før du prøver sudo pip install pgzero igjen.

Steg 1: Høyde og bredde Lag et nytt python-program med følgende kode: HEIGHT = 400 WIDTH = 600 Kjør programmet, og se hva som skjer. Du skal nå se et svart vindu som er 400 piksler høyt, og 600 piksler bredt. En piksel er et lyspunkt på skjermen og nøyaktig hvor stort dette lyspunktet er avhenger av hvilken skjerm du har - dermed kan det være at vinduet får ulik størrelse på andre datamaskiner enn din egen. Steg 2: Lag en ball! Vi skal nå lage en ball som vi kan vise på skjermen. Vi begynner med å lage en Ball -klasse, som har variablene radius og color, samt en posisjon bestående av x og y. COLORS = { 'red': (255, 0, 0), 'green': (0, 255, 0), 'blue': (0, 0, 255), 'white': (255, 255, 255), 'black': (0, 0, 0) } radius = 20 color = COLORS['red'] x = WIDTH // 2 y = HEIGHT // 2 Vi har her valgt å ha en rød ball, men du kan velge en annen farge fra COLORS -ordboka om du vil det. Husk at // betyr 'heltallsdivisjon', dvs at svaret rundes av nedover, slik at vi får et helt tall som svar.

Vi må i tillegg ha en funksjon som kan tegne ballen vår. Denne skal vi kalle for draw(). Husk på at funksjonene som skal være en del av klassen må ha et innrykk. Vi må dermed endre på klassen, slik at den ser slik ut: radius = 20 color = COLORS['red'] x = WIDTH // 2 y = HEIGHT // 2 def draw(self): screen.draw.filled_circle((self.x, self.y), self.radius, self.c olor) Nå må er du nesten ferdig. Vi må lage et Ball -objekt, ball1 og en global draw - funksjon. Dette vil se slik ut: ball1 = Ball() def draw(): screen.clear() ball1.draw() screen.clear() sørger for at vi tegner på en blank skjerm, og må alltid komme først i den globale funksjonen draw(). Du kan nå teste programmet ditt. Du skal få opp en ensfarget sirkel midt i vinduet. Steg 3: Bevegelse Vi vil at ballen vår skal bevege seg. Hvordan skal vi få til dette? Vi lager funksjonen update(). Først må vi legge til et par variabler som bestemmer farten på ballen. Vi skal her ha en variabel for farten i y-retning, og en variabel for farten i x-retning.

radius = 20 color = COLORS['red'] x = WIDTH // 2 y = HEIGHT // 2 speed_x = 3 speed_y = 3 Så må vi lage en en funksjon update() som er en del av Ball. Denne sørger for at ballen beveger seg speed_x piksler i x-retningen, og speed_y i y-retningen. #... def update(self): self.x += self.speed_x self.y += self.speed_y I tillegg må vi ha en global funksjon update() som kaller ball1.update() : def update(): ball1.update() Du kan nå teste programmet ditt igjen. Ballen skal nå bevege seg, dersom alt er gjort riktig. Hva skjer når den kommer til kanten? I neste steg skal vi sørge for at ballen ikke forsvinner ut av vinduet. Steg 4: Veggkollisjoner Vi ønsker å la ballen sprette tilbake når den treffer en vegg. Her er det et par ting vi må tenke på - hvordan oppdager vi at ballen treffer veggen, og hvordan kan vi endre variablene slik at den spretter vekk fra veggen? Ballens posisjon bestemmes av x og y men den har også radius som vi må ta hensyn til når vi skal oppdage om ballen treffer

veggen. Når ballen treffer den øverste eller den nederste veggen ønsker vi at farten reverseres i y-retning, det samme gjelder for farten i x-retning når vi treffer høyre eller venstre vegg. Vi må endre update() -funksjonen i Ball -klassen: #... def update(self): self.x += self.speed_x self.y += self.speed_y # sjekker for kollisjon i x-retning if self.x + self.radius >= WIDTH or self.x - self.radius <= 0: self.speed_x = -self.speed_x # sjekker for kollisjon i y-retning if self.y + self.radius >= HEIGHT or self.y - self.radius <= 0: self.speed_y = -self.speed_y Kjør programmet ditt, og pass på at ballen spretter tilbake når den treffer en av veggene. Steg 5: Styre farta til ballen Vi skal la brukeren styre farta til ballen ved hjelp av piltastene. Når brukeren trykker på 'Pil opp' skal ballen gå raskere oppover (evt. mindre fort nedover), det motsatte skal skje om brukeren trykker 'Pil ned'. Det samme skal skje om brukeren trykker på 'Pil høyre' eller 'Pil venstre', men da skal fartsendringa skje i x-retning. For å få til dette skal vi lage en on_key_down() -funksjon i Ball -klassen:

#... def on_key_down(self, key): if key == keys.left: self.speed_x -= 1 elif key == keys.right: self.speed_x += 1 elif key == keys.up: self.speed_y -= 1 elif key == keys.down: self.speed_y += 1 Legg merke til at funksjonen har et parameter, key, som brukes til å avgjøre hvilken tast brukeren trykket på. Vi trenger også en global on_key_down() -funksjon. Denne har også en key - parameter, som sendes videre til ball1.on_key_down(). def on_key_down(key): ball1.on_key_down(key) Du skal nå ha en ball som spretter mellom vinduskantene, og du skal kunne styre farten ved hjelp av piltastene. Utfordring: Stopp ballen Vi ønsker å bruke mellomromstasten for å stoppe ballen. Dvs. sette speed_x og speed_y til 0. Prøv å endre funksjonen on_key_down(key) i Ball -klassen for å sjekke om brukeren har trykket på mellomromstasten. Hint: key == keys.space vil være sant dersom brukeren trykker på mellomromstasten. Lisens: CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0/deed)