Level 4Lunar Lander

Skrevet av: Geir Arne Hjelle

Oversatt av: Gro Anette Vestre

Kurs: Scratch
Tema: Blokkbasert, Spill
Fag: Matematikk, Naturfag, Programmering, Kunst og håndverk
Klassetrinn: 5.-7. klasse, 8.-10. klasse
Bilde av BokmålPå Bokmål

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.

Illustrasjon av eit ferdig Lunar Lander-spel

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.

checkPlan

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.

Bilete som syner samanhengen mellom vinkel, sinus og cosinus

checkSjekkliste

  •     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 i gjenta for alltid-løkken hvor du vender romskipet for eksempel 5 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)) fordi retning 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.

checkSjekkliste

Steg 3: Klar for landing

Me vil til slutt sjekka kor og korleis romskipet landa.

checkSjekkliste

  • 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 bruke viss- og viss 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 og retning er mellom 80 og 100.

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?

checkIdear til vidareutvikling

  • Bilete av ein kopi av romskipet med flammer på
Lisens: CC BY-SA 4.0

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!