Innehållsförteckning:

Battle City Remake på GameGo med Makecode Arcade: 4 steg (med bilder)
Battle City Remake på GameGo med Makecode Arcade: 4 steg (med bilder)

Video: Battle City Remake på GameGo med Makecode Arcade: 4 steg (med bilder)

Video: Battle City Remake på GameGo med Makecode Arcade: 4 steg (med bilder)
Video: ElyOtto - SugarCrash! (Lyrics) 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 försöka återskapa ett klassiskt Battle City -tankskyttspel, som ursprungligen producerades och publicerades 1985 av Namco för Nintendo Entertainment System (NES). I det ursprungliga spelet styr spelaren en tank och skjuter projektiler för att förstöra fiendens stridsvagnar. Fiendens stridsvagnar försöker förstöra spelarens bas, liksom spelarens tank själv. Vi kommer att göra några ändringar i spelet för att bättre anpassa blockprogrammeringsmetoder med GameGo, men vår nyinspelning kommer fortfarande att behålla mycket likhet med det ursprungliga spelet. Låt oss börja!

Tillbehör

GameGo

Steg 1: Vårt alter -ego - gul tank

Vår Alter -ego - gul tank
Vår Alter -ego - gul tank

Öppna Makecode Arcade på https://arcade.makecode.com/ och klicka på nytt projekt. Vi börjar med att göra vårt alter-ego till den gula tanken. Välj Ställ in mySprite till sprite of kind -spelare och rita en gul tank uppåt som vår startsprite, sätt blocket inuti startblocket. Lägg till flytta mySprite med knappar block. Nu har vi en tank som vi kan flytta med knappar i simulering! Bra, men det är alltid i samma riktning, även när vi rör oss nedåt eller i sidled …

För att rätta till det, låt oss lägga till ytterligare fyra block, ett för varje riktningsknapp. Skapa en ny variabel, kallad riktning - vi kommer att spara rörelseriktningen för vår tank i den, 100 kommer att motsvara nedåt, -100 kommer att motsvara uppåt, 200 för höger och -200 för vänster. Varför dessa siffror? Du får se senare, när vi lägger till projektiler som vår tank kommer att skjuta. Logiken inom varje fyra av dessa block är väldigt enkel - vi kontrollerar om ny riktning (från knapptryckning) är densamma som riktning tidigare. Om det är så gör vi i princip inga ändringar. Om det inte är det så ändrar vi tankens sprite och i fallet med nedåt och vänster riktning vänder vi sprite -bilden för att undvika att dra ytterligare sprites. Låt oss slutligen tilldela startvärdet för riktningen till -100 (tank uppåt), eftersom det är så vår tank startar spelet. Försök att flytta den gula tanken nu, spriten kommer att förändras efter rörelseriktningen nu! Utmärkt, låt oss nu lägga till kulor.

Vi kommer att skjuta kulor med uppsatt projektil till projektil (rita en liten silverkvadrat för den spriten) från mySprite med vx vy -hastigheter. Inuti på on -knappen Ett pressat block måste vi kontrollera absolut riktningsvärde för att se om den gula tanken är vänd uppåt/nedåt till vänster/höger. Vi fortsätter sedan att skjuta projektilen med riktningsvariabelns hastighet -det var därför vi hade -100/100/-200/200 för riktningsvärden.

Nu har vi en gul tank som kan skjuta projektiler och röra sig. Om gula simulerade stridsvagnar kunde känna så skulle det säkert kännas ensamt i detta tomma tomrum utan fiender och saker att göra. Så, för nästa steg, låt oss lägga till fiender för att det ska fördriva tiden.

Steg 2: Ta fram fienderna

Ta fram fienderna
Ta fram fienderna
Ta fram fienderna
Ta fram fienderna

Vi börjar det här steget med att skapa ett gäng nya variabler: två matriser (en för att hålla fiendens sprites och en annan för att hålla fiendens riktningar), gyvningsvariabel för att lagra tidsperioden mellan lekar, fiendeantal för att lagra maximalt antal fiender på samma gång. Vi kommer också att lägga till två projektiler (projektil och fiendens projektil) som skjuter in i startblocket - det hjälper oss att undvika ett fel senare.

Därefter skapar vi på speluppdatering varje … ms block, sätter in spawn_time variabel där. Logiken inuti blocket är enkel - om det totala antalet fiender på slagfältet är mindre än det högsta tillåtna antalet fiender, lägg till en fiende till enemy_sprite_list och lägg till 200 (går åt höger) riktning för den fienden.

Därefter lägger vi till några grafiska effekter i det på skapade sprite of kind Enemy -blocket, lägger det på en slumpmässig tom kakel och kallar pick_direction -funktionen för denna sprite. In on sprite of kind Enemy hits wall, kallar vi samma funktion, pick_direction.

Vad finns i den funktionen? Här börjar saker bli lite komplicerade, så håll ut. Det finns 50 procents chans att fiendens tank går upp och 50 procent av den går ner - vi ändrar spriten därefter. Det enda tricket här är att vi också behöver ändra värdet som motsvarar just den fiendtanken i fiende_direktioner_lista till den nya riktningen, så vi skulle få den att skjuta kulor i rätt riktning. För det hittar vi indexet för fiende sprite i fiende_sprite_list och ändrar det objekts värde i fiende_direktionslista.

Slutligen, låt oss lägga till skott som skjuter. Vi lägger till ytterligare en om speluppdatering varje 500 ms block och lägger ett för -objekt i fiende_sprite_list. Med 30% chans kommer en fiendens sprite att skjuta fiendens projektil i dess rörelseriktning.

Om vi startar spelet i simulering nu kan vi se våra gula tankar och fiendens stridsvagnar som dyker upp i samma punkt och går ut i tomt utrymme. Vi kan skjuta och de kan skjuta vår gula tank, men ingenting skulle hända. Det känns så saknat mening fortfarande:) Låt oss lägga till dekorationerna och spelmekaniken som det sista steget.

Steg 3: 42 i spelet

42 i spelet
42 i spelet
42 i spelet
42 i spelet
42 i spelet
42 i spelet

Vi ska börja detta steg med att lägga till liv och poäng från fliken Info och sätta livet till 10 och poäng till noll. Sedan lägger vi till block set -kakelkarta till…. Rita filkartan för att se ut ungefär som du ser på skärmdumpen ovan. Glöm inte att lägga till väggarna!

Låt oss lägga till på sprite of kind Projektil överlappar andraSprite of kind Player - det här är när fiendens kulor träffar vår gula tank. Vi måste se till att dessa projektiler är fiendens kulor och inte våra egna, så vi lägger till att om tillståndet inom blocket och om det utvärderas som sant, subtraherar vi en från livräkning. I likhet med det, i ett annat block på sprite av slag Projektil överlappar andraSprite of kind Enemy ser vi till att projektilen är en projektil från gul tank och om detta tillstånd utvärderas som sant, förstör vi andraSprite (fiendens tank), ta bort det från listan av enemy_sprite_list och lägg till en för att göra mål.

Det sista är seger och nederlag - för seger kontrollerar vi om poängen är högre eller lika med 10 i evigt block. Om det är så visar vi segerskärmen. Och i livets nollblock visar vi Game Over -skärmen.

Testa nu i simuleringen för att se om spelet körs som förväntat. Ladda sedan upp den till GameGo och njut av att krossa fiendens stridsvagnar!

Steg 4: Oändligt spel och förbättringar

Ändlösa spel och förbättringar
Ändlösa spel och förbättringar

I vårt GitHub -arkiv kan du ladda ner två filer för Makecode -arkad - en är exakt densamma som du skulle få om du följer denna instruerbara och den andra är en uppgraderad version, som har slumpmässigt genererat nivåprogression. Den har 10 nivåer, var och en genereras slumpmässigt med ökat antal fiender i varje successiv nivå.

Och naturligtvis finns det ännu fler saker du eller dina elever kan lägga till i spelet utöver det! Det finns bättre musik, brytbara väggar, olika segerförhållanden 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år blogg.

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

Rekommenderad: