Lunar Lander
Skrevet av: Geir Arne Hjelle
Oversatt av: Gro Anette Vestre
Introduksjon
Lunar Lander vart opprinneleg utvikla på slutten av 1970-tallet. Målet med spelet er å landa eit romskip på månen. Sjølve kontrollen av romskipet vart vidareført i spelet Asteroids som vart utgitt året etter.

Oversikt over prosjektet
Mesteparten av kodinga av Lunar Lander skal du gjera sjølv. I Lunar Lander vil me spesielt bruka litt tid på gjera den fysiske modelleringa av romskipet ganske realistisk.
Plan
Steg 1: Eit flygande romskip
Me skal nå programmera eit romskip som flyr rundt på skjermen. For å ha kontroll på bevegelsen vil me bruka to variable, fartX
og fartY
, som beskriv kor raskt romskipet bevegar seg henholdsvis sidelengs og opp-og-ned. Ved å bruka begge desse samtidig vil romskipet kunna bevega seg i alle retningar.
Utfordringa i programmeringa av spelet er at romskipet kan rotera uavhengig av kva retning det faktisk flyr. Når spelaren trykker pil-opp for å bruka motoren vil me gi romskipet ekstra fart i den retninga det peikar. Det betyr at me må fordela farten i romskipet sin retning i kor mykje sidelengs fart det får, og kor mykje av farten som går opp eller ned.
Dette virkar umiddelbart kanskje litt vanskelig, men det er akkurat dette dei matematiske funksjonene sinus
og cosinus
gjer. I funksjonen nedanfor fortel for eksempel cosinus(vinkel)
oss kor lang den vannrette streken er i forhold til den skrå streken.

Sjekkliste
-
set storleik til (20) %
rett etter at det grønne flagget er klikket.
-
når eg får meldinga [Nytt spel v] gå til x: (0) y: (175) peik i retning (90 v) set [fartX v] til (0) set [fartY v] til (0) gjenta for alltid endra [fartY v] med (-0.01) endra x med (fartX) endra y med (fartY) slutt
Om du prøver spelet ditt nå skal romskipet falle stadig raskare nedover skjermen. Prøv å endre litt i klossen
endra [fartY v] med (-0.01)
Det er denne som modellerer tyngdekraften. Om du forandrar verdien her vil romskipet falle raskare eller tregare, eller det kan til og med falle oppover om du lar tyngdekraften vera positiv.
-
Legg til to
viss
-blokker inne igjenta for alltid
-løkken hvor duvender
romskipet for eksempel5
grader mot høgre eller venstre avhengig av kva piltast du trykker på. -
viss <tasten [pil opp v] er trykt?> endra [fartX v] med ((0) - ([cos v] av (retning))) endra [fartY v] med ([sin v] av (retning)) slutt
Du finn både sinus og cosinus-funksjonene som valg på klossen
([kvadratrot v] av (9))
Me må bruke
((0) - ([cos v] av (retning)))
i stadenfor([cos v] av (retning))
fordiretning
i Scratch måles motsatt veg av korleis ein målar vinklar i matematikk. -
endra [fartX v] med ((0.3) * ((0) - ([cos v] av (retning)))) endra [fartY v] med ((0.3) * ([sin v] av (retning)))
Pass på at du justerar begge klossane med det same tallet.
Steg 2: Me kjem til månen
Nå skal me leggje til eit månelandskap der spelaren skal prøva å landa.
Sjekkliste
Steg 3: Klar for landing
Me vil til slutt sjekka kor og korleis romskipet landa.
Sjekkliste
-
1: Romskipet landa utanfor landingsplassen (kræsjet).
2: Romskipet landa på landingsplassen, men landa enten på skrå (eller opp-ned) eller for raskt.
3: Romskipet landa perfekt på landingsplassen.
Lag eit nytt skript på romskipet som starter når det mottar meldingen
Sjekk landing
. Under denne klossen må du brukeviss
- ogviss elles
-klosser som tester for dei tre tilfella. Du kan for eksempel sei at landinga er perfekt dersom romskipet lander på landingsplassen,fartY
er større enn-1.5
ogretning
er mellom80
og100
.
Steg 4: Vidareutvikling av spelet
Du har nå laga ein enkel variant av Lunar Lander. Men prøv å gjera spelet kjekkare ved å vidareutvikla det. Du bestem sjølv korleis du vil jobba vidare, men nedanfor er nokre idear som kanskje kan vera til inspirasjon?
Idear til vidareutvikling
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!