Innehållsförteckning:

Plattform med oändliga nivåer på GameGo med Makecode Arcade: 5 steg (med bilder)
Plattform med oändliga nivåer på GameGo med Makecode Arcade: 5 steg (med bilder)

Video: Plattform med oändliga nivåer på GameGo med Makecode Arcade: 5 steg (med bilder)

Video: Plattform med oändliga nivåer på GameGo med Makecode Arcade: 5 steg (med bilder)
Video: Cheese Escape - [Full Walkthrough] - Roblox 2024, Juli
Anonim
Image
Image

GameGo är en Microsoft Makecode -kompatibel bärbar konsol för retrospel utvecklad av TinkerGen STEM education. Den är baserad på STM32F401RET6 ARM Cortex M4 -chip och gjord för STEM -lärare eller bara människor som gillar att ha roligt med att skapa retro -videospel. Du kan följa denna handledning och prova spelet i Makecode Arcade -simulatorn och sedan köra det på GameGo.

I den här artikeln ska vi göra ett plattformsspel med oändligt slumpmässigt genererade nivåer. I en plattformsspelare måste den spelarkontrollerade karaktären hoppa och klättra mellan hängande plattformar samtidigt som man undviker hinder. Miljöer har ofta ojämn terräng av varierande höjd som måste korsas. Spelaren har ofta viss kontroll över höjden och avståndet för hopp för att undvika att låta deras karaktär falla till döds eller missa nödvändiga hopp. Vi kommer att implementera alla dessa grundläggande element och lägga till en anpassad funktion som genererar nya nivåer när vi når slutet av den sista. Låt oss börja!

Tillbehör

GameGo

Steg 1: hjälten

Hjälten
Hjälten

Som ett första steg kommer vi att skapa vårt alter-ego. Mina teckningsförmågor är ganska dåliga, så jag bestämde mig bara för att använda en från Galleriet;) Till skillnad från det tidigare spelet vi gjorde kan vår spelbara karaktär i den här plattformsspelaren bara flytta åt vänster och höger och den kan också hoppa. Så istället för att ha två olika sprites för huvudpersonen, räcker en med den här gången - vi kan bara vända sprites bild när vi ändrar riktning.

Det första du ska göra är att lägga till bakgrund och kakelkarta. Jag har valt 32x8 lång kakelkarta - för första nivån ritar vi den manuellt, som i skärmdump 2. Sedan lägger vi till vår spelbara karaktär med set mySprite till sprite of kind Player block och placerar den på toppen av kakel 0-5. Vi ställde också in kameran för att röra sig med spelbar karaktär och styra dess vänster och höger rörelse - vi kommer att ställa in hastigheten vy av rörelse till 0, eftersom vår karaktär inte borde kunna flyta fritt på kartan längs y -riktningen. Lägg till två på … knapptryckta block, en för vänster knapp, en för höger. När du trycker på vänster knapp kontrollerar vi om vår riktning var "vänster" innan du trycker på knappen. Om det var det, fortsätter vi bara att gå åt vänster. Om det inte var vi behöver vända vår karaktärs sprite -bild. Liknande logik för rätt rörelse.

Allt bra för tillfället, det enda problemet verkar som att vår hjälte inte kan övervinna något hinder. Så vi måste lägga till hoppning. Vi kommer att övervaka kontrollerna för upp -knapptryckning och när det upptäcks kommer vi att ställa in variabel hoppning till 1, notera den tid hopprörelserna startade och ställ in karaktärens spritehastighet vy till -200 (går upp). Efter en viss tidsperiod kommer vi att ställa in hastigheten till 200 (nedåt), så att vår hjälte inte skulle skjuta upp till himlen som en raket.

Jag tror att vi skapade en hjälte värdig utmaningen nu! Tja, var är utmaningen?

Steg 2: Fienderna

Fienderna
Fienderna

Vi kommer att använda en matrisstruktur för att lagra fiendens sprites. För typer av fiender tar vi en liten genväg och använder fladdermöss:) inte en coronavirusreferens, det är bara fladdermöss som kan flyga, det är därför vi inte behöver "simulera" gravitationen för dem, som vi gör med vår spelbara karaktär. Använd på skapade sprite av snälla fiendeblock för att placera nyskapade fladdermöss på slumpmässiga kakelplattor (markerade med ett litet vitt märke) och ställ in deras vx -hastighet till -10 (långsamt drivande åt höger). Sedan inom speluppdateringen varje 2000 ms -blocket itererar vi igenom varje objekt i fiende_list och ändrar slumpmässigt deras riktning, samtidigt som vi vänder fladdermusens sprites om det behövs (för att återspegla förändringen i rörelseriktning). Slutligen lägger vi till på sprite of kind Player överlappar med otherSprite of kind Enemy block, där vi gör en enkel kontroll om spelaren redan har träffats. Om det inte var vi drar av ett liv, ställ hit flagga till 1 (har träffats) och starta timern. När 500 ms sedan den senaste träfftiden passerade ändrar vi flaggslaget tillbaka till 0. Vi gör det för att spelaren ska undvika att förlora för många av sina dyrbara liv efter att ha kolliderat med en fiende.

Låt oss kolla hur vi har det. Tja, scenen verkar verkligen levande med alla fladdermöss som flyger runt och biter vår spelare. Nu behöver vi ett vapen för att göra våra hjältedåd!

Steg 3: Vapnet

Vapnet
Vapnet

För vapnet drog jag inspirationen från ett gammalt Nintendo -spel om två jordekornbröder:) Låt oss lägga till lådspritarna till nivån, på samma sätt som vi gör med att lägga till fienderna. Vi initierar också variabeln has_crate till -1, vilket indikerar att vår karaktär inte bär en låda. I på sprite of kind Player överlappar vi med otherSprite of kind Food block, vi kontrollerar om vi redan håller en låda och om vi inte gör det, sätter vi variabeln has_crate till indexet för lådan sprite i listan. Sedan i speluppdateringsblocket flyttar vi den spriten tillsammans med spelarens sprite och om knappen A trycks in ändrar vi lådans vx -hastighet till 1200 eller -1200 (beroende på karaktärens rörelseriktning). Vi ställde också in variabeln has_crate till -1 igen och ändrar typ av sprite i lådan som just nu lanserades i luften till Projectile.

Slutligen behöver vi att lådorna faktiskt förstör fienderna när de skjuts upp (men inte när fienderna slumpmässigt snubblar över en låda! Det är därför vi tilldelade lådor att skriva mat och ändra den till projektil endast när de lanserades) och självförstörde när de träffade väggen. Vi använder en annan på sprite of kind Projektil överlappar med andraSprite of kind Enemy block för det - i så fall förstör vi båda sprites och höjer poängen med en. Om projektil träffar väggen förstör vi dess sprite.

Nästan klart nu! Spelet är spelbart nu, men knappast någon utmaning fortfarande - bara en nivå och ganska enkelt på det. Vi kan göra fler nivåer för hand eller skriva en algoritm som skulle generera dessa nivåer automatiskt för oss - även om de naturligtvis inte kommer att vara lika vackra som konstgjorda nivåer.

Steg 4: Oändliga äventyr

Oändliga äventyr
Oändliga äventyr
Oändliga äventyr
Oändliga äventyr
Oändliga äventyr
Oändliga äventyr

Funktionen för slumpmässig nivågenerering ser lite skrämmande ut först, men det är verkligen en enkel serie steg för att algoritmiskt generera en ny nivå, på det sättet att en ny nivå är acceptabel för spelbar karaktär. Först tar vi hand om att få vår karaktär till den nya nivån - genom att använda på överflödiga Player -överlappningar … på plats - använder vi portaldörrplattor som utlösare till en ny nivå. I generera_nivå -funktionen initierar vi variablerna rad, kol och chans. Vi skapar också en ny kakelkarta, samma storlek som tidigare, men tom. Här är dock en liten varning - för att kunna använda set … på tilemap row … col… block, måste tilemap ha dessa speciella brickor --- det är lite kontra intuitivt och kanske ett fel i Makecode. Så det du behöver göra är att skapa en tilemap, sätta alla brickor som du vill använda i slumpmässig generation OCH radera dem sedan.

Vi lägger den första brickan (0x6) och spelaren manuellt ovanpå den. Sedan upprepar vi nästa steg 30 gånger - nästa steg är enkla serier av True -False -kontroller, som avgör om nästa kolumn kommer att vara 1) samma nivå som föregående 2) en upp eller 3) en ner. Det finns också en mycket liten chans att nästa kakel kommer att bli en lavakakel - vi vill inte ha för många av dessa! Efter varje kakel som genereras fyller vi utrymmet under det med lava - bara för att det ska vara snyggt. Som ett sista steg lägger vi till fienderna och lådorna och lägger dem ovanpå slumpmässiga lekplattor.

Steg 5: Äventyret börjar

Äventyret börjar
Äventyret börjar

Voila! Vi avslutade vår plattformsspelare och vår hjälte kan åka på ett oändligt äventyr, besegra fladdermöss och förstöra lådor. om du stöter på problem kan du ladda ner koden från vårt GitHub -arkiv.

Det är bara en plan och det finns definitivt några förbättringar som kan göras, till exempel olika slags fiender, bonusar, bättre nivågenerering och så vidare. Om du gör en förbättrad version av spelet, dela det i kommentarerna nedan! För mer information om GameGo och annan hårdvara för tillverkare och STEM -lärare, besök vår webbplats, https://tinkergen.com/ och prenumerera på vårt nyhetsbrev.

TinkerGen har skapat en Kickstarter -kampanj för MARK (Make A Robot Kit), en robotkit för att lära ut kodning, robotik, AI!

Rekommenderad: