Lunar Lander
Skrevet av: Geir Arne Hjelle
Introduksjon
Lunar Lander ble opprinnelig utviklet på slutten av 1970-tallet. Målet med spillet er å lande et romskip på månen. Selve kontrollen av romskipet ble videreført i spillet Asteroids som ble utgitt året etter.
Oversikt over prosjektet
Mesteparten av kodingen av Lunar Lander skal du gjøre selv. I Lunar Lander vil vi spesielt bruke litt tid på gjøre den fysiske modelleringen av romskipet ganske realistisk.
Plan
Steg 1: Et flyvende romskip
Vi skal nå programmere et romskip som flyr rundt på skjermen. For å ha kontroll på bevegelsen vil vi bruke to variable, fartX
og fartY
, som beskriver hvor raskt romskipet beveger seg henholdsvis sidelengs og opp-og-ned. Ved å bruke begge disse samtidig vil romskipet kunne bevege seg i hvilken som helst retning.
Utfordringen i programmeringen av spillet er at romskipet kan rotere uavhengig av hvilken retning det faktisk flyr. Når spilleren trykker pil-opp for å bruke motoren vil vi gi romskipet ekstra fart i den retningen det peker. Det betyr at vi må fordele farten i romskipets retning i hvor mye sidelengs fart det får, og hvor mye av farten som går opp eller ned.
Dette virker umiddelbart kanskje litt vanskelig, men det er akkurat dette de matematiske funksjonene sinus
og cosinus
gjør. I funksjonen nedenfor forteller for eksempel cosinus(vinkel)
oss hvor lang den vannrette streken er i forhold til den skrå streken.
Sjekkliste
-
sett størrelse til (20) %
rett etter at det grønne flagget er klikket.
-
når jeg mottar [Nytt spill v] gå til x: (0) y: (175) pek i retning (90 v) sett [fartX v] til [0] sett [fartY v] til [0] gjenta for alltid endre [fartY v] med (-0.01) endre x med (fartX) endre y med (fartY) slutt
Om du prøver spillet ditt nå skal romskipet falle stadig raskere nedover skjermen. Prøv å endre litt i klossen
endre [fartY v] med (-0.01)
Det er denne som modellerer tyngdekraften. Om du forandrer verdien her vil romskipet falle raskere eller tregere, eller det kan til og med falle oppover om du lar tyngdekraften være positiv.
-
Legg til to
hvis
-blokker inne igjenta for alltid
-løkken hvor duvender
romskipet for eksempel5
grader mot høyre eller venstre avhengig av hvilken piltast som trykkes. -
hvis <tast [pil opp v] trykket?> endre [fartX v] med ((0) - ([cos v] av (retning))) endre [fartY v] med ([sin v] av (retning)) slutt
Du finner både sinus og cosinus-funksjonene som valg på klossen
([kvadratrot v] av (9))
Vi må bruke
((0) - ([cos v] av (retning)))
i stedet for([cos v] av (retning))
fordiretning
i Scratch måles motsatt vei av hvordan man måler vinkler i matematikk. -
endre [fartX v] med ((0.3) * ((0) - ([cos v] av (retning)))) endre [fartY v] med ((0.3) * ([sin v] av (retning)))
Pass på at du justerer begge klossene med det samme tallet.
Steg 2: Vi ankommer månen
Nå skal vi legge til et månelandskap hvor spilleren skal prøve å lande.
Sjekkliste
Steg 3: Klar for landing
Vi vil til slutt sjekke hvor og hvordan romskipet landet.
Sjekkliste
-
1: Romskipet landet utenfor landingsplassen (kræsjet).
2: Romskipet landet på landingsplassen, men landet enten på skrå (eller opp-ned) eller for raskt.
3: Romskipet landet perfekt på landingsplassen.
Lag et nytt skript på romskipet som starter når det mottar meldingen
Sjekk landing
. Under denne klossen må du brukehvis
- oghvis ellers
-klosser som tester for de tre tilfellene. Du kan for eksempel si at landingen er perfekt dersom romskipet lander på landingsplassen,fartY
er større enn-1.5
ogretning
er mellom80
og100
.
Steg 4: Videreutvikling av spillet
Du har nå laget en enkel variant av Lunar Lander. Men prøv å gjøre spillet morsommere ved å videreutvikle det. Du bestemmer selv hvordan du vil jobbe videre, men nedenfor er noen ideer som kanskje kan være til inspirasjon?
Ideer til videreutvikling
Forbedre denne siden
Funnet en feil? Kunne noe vært bedre?
Hvis ja, vennligst gi oss tilbakemelding ved å lage en sak på Github eller fiks feilen selv om du kan. Vi er takknemlige for enhver tilbakemelding!