Indholdsfortegnelse:

Platform med uendelige niveauer på GameGo med Makecode Arcade: 5 trin (med billeder)
Platform med uendelige niveauer på GameGo med Makecode Arcade: 5 trin (med billeder)

Video: Platform med uendelige niveauer på GameGo med Makecode Arcade: 5 trin (med billeder)

Video: Platform med uendelige niveauer på GameGo med Makecode Arcade: 5 trin (med billeder)
Video: World's Largest FREE WILL Debate w/ Top Physicists & Philosophers 2024, November
Anonim
Image
Image

GameGo er en Microsoft Makecode -kompatibel retro gaming bærbar konsol udviklet af TinkerGen STEM education. Den er baseret på STM32F401RET6 ARM Cortex M4 -chip og lavet til STEM -undervisere eller bare folk, der kan lide at have det sjovt med at skabe retro -videospil. Du kan følge denne vejledning og prøve spillet i Makecode Arcade -simulator og derefter køre det på GameGo.

I denne artikel skal vi lave et platformspil med uendelige tilfældigt genererede niveauer. I en platformspiller skal den spillerkontrollerede karakter hoppe og klatre mellem hængende platforme, mens forhindringer undgås. Miljøer har ofte ujævnt terræn af varierende højde, der skal krydses. Spilleren har ofte en vis kontrol over springens højde og afstand for at undgå at lade deres karakter falde til døden eller gå glip af nødvendige spring. Vi implementerer alle disse grundlæggende elementer og tilføjer også en brugerdefineret funktion, der genererer nye niveauer, når vi når slutningen af den sidste. Lad os begynde!

Forbrugsvarer

GameGo

Trin 1: Helten

Helten
Helten

Som et første skridt vil vi skabe vores alter-ego. Mine tegnefærdigheder er ret dårlige, så jeg besluttede lige at bruge en fra galleriet;) I modsætning til det tidligere spil, vi lavede, kan denne spilbare karakter kun bevæge sig til venstre og højre, og den kan også hoppe. Så i stedet for at have to forskellige sprites til hovedpersonen, er den ene nok denne gang - vi kan bare vende sprites billede, når vi ændrer retning.

Den første ting at gøre er at tilføje baggrund og flisekort. Jeg har valgt et 32x8 langt flisekort - for det første niveau tegner vi det manuelt, som i skærmbillede 2. Derefter tilføjer vi vores spilbare karakter med sæt mySprite til sprite af slags Player blok og placerer den på toppen af flise 0-5. Vi har også indstillet kameraet til at bevæge sig med spilbar karakter og kontrollere dets venstre og højre bevægelse - vi sætter bevægelsens hastighed vy til 0, da vores karakter ikke burde kunne flyde frit på kortet langs y -retning. Tilføj to på… knap, der trykkes på, en til venstre knap, en til højre. Når der trykkes på venstre knap, kontrollerer vi, om vores retning var "venstre", før vi trykker på knappen. Hvis det var det, fortsætter vi bare med at gå til venstre. Hvis det ikke var vi nødt til at vende vores karakters sprite image. Lignende logik for højre bevægelse.

Alt godt for nu, det eneste problem ser ud til, at vores helt ikke ser ud til at overvinde nogen hindring. Så vi skal tilføje spring. Vi overvåger kontrollerne for op -knap -tryk, og når det opdages, sætter vi variabel springning til 1, noterer den tid, hoppebevægelser startede, og sæt karakterens spritehastighed vy til -200 (går op). Efter en bestemt periode sætter vi hastigheden til 200 (går ned), så vores helt ikke skyder op til himlen som en raket.

Jeg tror, vi skabte en helt, der var udfordringen værd nu! Nå, hvor er udfordringen?

Trin 2: Fjenderne

Fjenderne
Fjenderne

Vi vil bruge en array -struktur til at gemme fjendernes sprites. For type fjender tager vi en lille genvej og bruger flagermus:) ikke en coronavirus -reference, det er bare flagermus, der kan flyve, derfor behøver vi ikke at "simulere" tyngdekraften for dem, som vi gør med vores spilbare karakter. Brug på skabt sprite af slagsen Fjendeblok til at placere nyoprettede flagermus på tilfældige gydefliser (markeret med et lille hvidt mærke) og indstil deres vx -hastighed til -10 (langsomt til højre). Derefter gentager vi hver 2000 ms blok i spilopdateringen gennem hvert element i fjendeliste og ændrer tilfældigt deres retning, mens vi også vender flagermusens sprites om nødvendigt (for at afspejle ændringen i bevægelsesretning). Endelig tilføjer vi på sprite of kind Player overlapninger med otherSprite of kind Enemy -blok, hvor vi foretager en enkel kontrol af, om spilleren allerede er blevet ramt. Hvis det ikke var det, vi trak ét liv, sæt hit flag til 1 (er blevet ramt) og start timeren. Når 500 ms siden sidste hit -tid gik, ændrer vi flaghit tilbage til 0. Det gør vi for at spilleren skal undgå at miste for mange af dets dyrebare liv efter at have kollideret med en fjende.

Lad os kontrollere, hvordan vi har det. Nå, scenen virker bestemt livligere med alle flagermusene, der flyver rundt og bider vores spiller. Nu har vi brug for et våben til at udføre vores heroiske gerninger!

Trin 3: Våbnet

Våbenet
Våbenet

Til våbnet hentede jeg inspirationen fra et gammelt Nintendo -spil om to jordegernbrødre:) Lad os tilføje kasse -sprites til niveauet, på samme måde som vi tilføjer fjender. Vi initialiserer også has_crate -variablen til -1, hvilket indikerer, at vores karakter ikke bærer en kasse. I on sprite of kind Spiller overlapper med otherSprite of kind Madblok, kontrollerer vi, om vi allerede holder en kasse, og hvis vi ikke gør det, sætter vi variabelen has_crate til indekset for kasse -sprite på listen. Så i spilopdateringsblokken flytter vi den sprite sammen med spillerens sprite, og hvis der trykkes på knappen A, ændrer vi kassens vx -hastighed til 1200 eller -1200 (afhængigt af karakterens bevægelsesretning). Vi sætter også has_crate -variablen tilbage til -1 igen og ændrer typen af sprite i kassen, der blev lanceret i luften lige nu til Projectile.

Endelig har vi brug for, at kasserne rent faktisk ødelægger fjenderne, når de skydes i gang (men ikke når fjenderne tilfældigt snubler over en kasse! Derfor har vi tildelt kasser til at skrive mad og kun ændre den til projektil, når de er lanceret) og selvdestruerer, når de rammer væggen. Vi bruger en anden on sprite of kind Projektiloverlapninger med otherSprite of kind Enemy -blok til det - i så fald ødelægger vi begge sprites og hæver score med en. Hvis projektil rammer muren, ødelægger vi dens sprite.

Næsten færdig nu! Spillet kan spilles nu, men næsten ingen udfordring stadig - kun et niveau og ret simpelt på det. Vi kunne lave flere niveauer i hånden eller skrive en algoritme, der ville generere disse niveauer automatisk for os - selvom de selvfølgelig ikke vil være så smukke som menneskeskabte niveauer.

Trin 4: Uendelige eventyr

Uendelige eventyr
Uendelige eventyr
Uendelige eventyr
Uendelige eventyr
Uendelige eventyr
Uendelige eventyr

Funktionen til tilfældig niveaugenerering ser lidt skræmmende ud i starten, men det er virkelig en simpel række trin til algoritmisk at generere et nyt niveau, på den måde at et nyt niveau er acceptabelt for spilbar karakter. For det første sørger vi for at få vores karakter til det nye niveau - ved at bruge på sprite of kind Player -overlapninger … på stedet - bruger vi portaldørfliser som trigger til et nyt niveau. I generere_level funktion initialiserer vi variabler række, kol og tilfældighed. Vi opretter også et nyt flisekort, samme størrelse som før, men tomt. Her er dog en lille advarsel - for at kunne bruge sæt… på tilemap -række… col… -blok, skal tilemapet have disse særlige fliser --- det er lidt modintuitivt og måske en fejl i Makecode. Så hvad du skal gøre er at oprette et tilemap, sætte alle de flisetyper, du vil bruge i tilfældig generation OG derefter slette dem.

Vi lagde den første flise (0x6) og afspilleren manuelt oven på den. Derefter gentager vi næste trin 30 gange - næste trin er en simpel serie af sand -falsk kontrol, som afgør, om den næste kolonne flise os skal være 1) samme niveau som tidligere 2) en op eller 3) en ned. Der er også meget lille chance for, at næste flise bliver en lavaflise - vi vil ikke have for mange af disse! Efter hver genereret flise fylder vi rummet under det med lava - bare for smukhedens skyld. Som et sidste trin tilføjer vi fjenderne og kasserne og placerer dem oven på tilfældige gydefliser.

Trin 5: Eventyr begynder

Eventyr begynder
Eventyr begynder

Voila! Vi færdiggjorde vores platformspil, og vores helt kan tage på et uendeligt eventyr, besejre flagermus og ødelægge kasser. hvis du støder på problemer, kan du downloade koden fra vores GitHub -depot.

Det er bare en blueprint, og der er helt sikkert nogle forbedringer, der kan foretages, for eksempel forskellige slags fjender, bonusser, bedre niveaugenerering og så videre. Hvis du laver en forbedret version af spillet, kan du dele det i kommentarerne herunder! For mere information om GameGo og anden hardware til producenter og STEM -undervisere, besøg vores websted, https://tinkergen.com/ og tilmeld dig vores nyhedsbrev.

TinkerGen har oprettet en Kickstarter -kampagne for MARK (Make A Robot Kit), et robotsæt til undervisning i kodning, robotik, AI!

Anbefalede: