I denne oppskriften skal du trinn for trinn bygge opp en enkel variant av spillet Space Invader med bare én invader (i gangen) og en defender. Defender skal forsøke å skyte invader, og får ett poeng pr. invader som blir skutt ned. For hver invader som unnslipper mister defender ett liv.
Ved start skal du lage tre variabler du kaller invader, defender og missil. I hver av disse variablene skal du lage en brikke og plassere brikkene på fornuftige steder på skjermen.
Spillet blir vanskeligere dersom invader beveger seg fort, og lettere om invader er treig. Lag en variabel som du kaller invader_speed og en variabel du kaller missil_speed og sett dem til henholdsvis 2000 og 100. Du kan endre disse verdiene senere i spillet om du vil.
Ved oppstart av spillet skal du ha 0 poeng og 3 liv. Du får ett nytt poeng hver gang du skyter og treffer invader og du mister ett liv hver gang invader passerer forbi deg.
Defender må kunne flytte seg til sidene, og det kan være naturlig å bruke knappene A og B til å flytte brikken defender. Når knapp A trykkes skal defender flytte seg til venstre og når knapp B trykkes skal defender flytte seg til høyre.
I denne enkle varianten av Space Invader vil invader bevege seg mot defender, og dersom defender ikke skyter invader vil invader forsvinne fra skjermen før en ny invader kommer til syne øverst på skjermen. Programmeringsmessig skal vi løse dette ved å flytte invader tilbake til toppen på skjermen (Y=0) hver gang den kommer seg forbi defender (Y=4). Vi må først lage oss en egen funksjon som skal flytte defender tilbake til toppen av brettet. Trykk på Avansert og deretter på Funksjon. Der skal du lage en ny funksjon som heter “resetInvader”. De skal ikke legge til noen parametre til denne, bare trykke fullført etter å ha endret navnet på funksjonen “gjørNoe” til “resetInvader”.
Etterpå skal du legge kommandoer i denne funksjonen som angir invader sin Y-koordinat til 0 og invader sin X-koordinat til et tilfeldig tall.
Når du trykker på knapp A+B (altså A og B samtidig) skal missil (som nå er usynlig ett eller annet sted på skjermen) flyttes til defender sin koordinat, bli synlig, og bli skutt ut fra defender. Missil skal bevege seg oppover på skjermen helt til det kommer til toppen. Der skal det på nytt bli usynlig og vente på neste avfyring.
For hver gang du flytter missil ett hakk bør du sjekke om missil kolliderer med (berører) invader. I så fall kan du øke poengsummen din med 1, angi missil sitt lysstyrke til 0 (usynlig) og resette invader ved å bruke funksjonen du lagde i stad.
Nå skal vi la invader flytte seg automatisk nedover skjermen. Dette kan oppnås ved å bruke en “gjenta for alltid”-løkke fra Basis-menyen. Det som skal gjentas er følgende algoritme (et teknisk for for oppskrift):
Gjenta for alltid:
Med denne løsningen mister du liv hvis du kolliderer med invader. Hvis du unngår kollisjon mister du bare ett poeng for hver invader som unnslipper. Ved å trykke på “Result” under får du opp et ukomplett løsningsforslag som du kan ta utgangspunkt i.
Ved å trykke på “Result” under får du et komplett løsningsforslag.