Innholdsfortegnelse:

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

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

Video: Battle City Remake på GameGo With Makecode Arcade: 4 trinn (med bilder)
Video: Battle City Remake on GameGo with Makecode Arcade 2024, November
Anonim
Image
Image

GameGo er en Microsoft Makecode -kompatibel bærbar spillkonsoll for retro utviklet av TinkerGen STEM education. Den er basert på STM32F401RET6 ARM Cortex M4 -brikken og laget for STEM -lærere eller bare folk som liker å ha det gøy med å lage retro -videospill. Du kan følge denne opplæringen og prøve spillet i Makecode Arcade -simulatoren og deretter kjøre det på GameGo.

I denne artikkelen skal vi prøve å gjenskape et klassisk Battle City -skytespill, opprinnelig produsert og utgitt i 1985 av Namco for Nintendo Entertainment System (NES). I det originale spillet styrer spilleren en tank og skyter prosjektiler for å ødelegge fiendtlige stridsvogner. Fiendens stridsvogner prøver å ødelegge spillerens base, samt spillerens tank selv. Vi vil gjøre noen endringer i spillet for å bedre imøtekomme blokkeringspraksis med GameGo, men vår nyinnspilling vil fortsatt beholde mye likhet med det opprinnelige spillet. La oss begynne!

Rekvisita

GameGo

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

Vårt alter -ego - gul tank
Vårt alter -ego - gul tank

Åpne Makecode Arcade på https://arcade.makecode.com/ og klikk på nytt prosjekt. Vi begynner med å lage vårt alter-ego den gule tanken. Velg Sett mySprite til en sprite av slagblokk og tegne en gul tank vendt oppover som startsprite, sett den innvendig på startblokken. Legg til flytte mySprite med knapper blokk. Nå har vi en tank som vi kan flytte med knapper i simulering! Flott, men det vender alltid i samme retning, selv når vi beveger oss nedover eller sidelengs …

For å korrigere det, la oss legge til fire flere blokker, en for hver retningsknapp. Lag en ny variabel, kalt retning - vi lagrer bevegelsesretningen til tanken vår i den, 100 vil svare til ned, -100 vil svare til opp, 200 for høyre og -200 for venstre. Hvorfor disse tallene? Du vil se senere, når vi legger til prosjektilene som tanken vår vil skyte. Logikken i hver av disse blokkene er veldig enkel - vi sjekker om ny retning (fra knappetrykk) er den samme som retning før. Hvis det er det, gjør vi i utgangspunktet ingen endringer. Hvis det ikke er det, endrer vi tankens sprite og i tilfelle nedadgående og venstre retning vipper bildet på spriteen for å unngå å tegne ytterligere sprites. Til slutt, la oss tildele startverdien for retning til -100 (tank oppover), siden det er slik tanken vår starter spillet. Prøv å flytte den gule tanken nå, spriten vil endre seg i henhold til bevegelsesretningen nå! Utmerket, la oss legge til kuler.

Vi skyter kuler med settet prosjektil til prosjektil (tegner liten sølvkant for spriten) fra mySprite med vx vy -hastigheter. Innsiden av på -knappen En blokk som er trykket ned, vi må sjekke absolutt retningsverdi for å se om den gule tanken vender opp/ned av venstre/høyre. Deretter fortsetter vi å skyte prosjektilet med retningsvariabelen -derfor hadde vi -100/100/-200/200 for retningsverdier.

Nå har vi en gul tank som kan skyte prosjektiler og bevege seg. Hvis gule simulerte tanker kunne ha en følelse, ville det sikkert føles ensomt i dette tomme tomrommet uten fiender og ting å gjøre. Så, for det neste trinnet, la oss legge til fiender for at det skal gå tiden.

Trinn 2: Få frem fiendene

Få frem fiendene
Få frem fiendene
Få frem fiendene
Få frem fiendene

Vi starter dette trinnet med å lage en haug med nye variabler: to matriser (en for å holde fiendtlige sprites og en annen for å holde fiendens retninger), gytevariabel for lagring av tidsperioden mellom gyter, fiendtall for lagring av maksimalt antall fiender samtidig. Vi vil også legge til to prosjektiler (prosjektil og fiendtlig prosjektil) som skyter inn på startblokken - det vil hjelpe oss med å unngå en feil senere.

Neste oppretter vi på spilloppdatering hver … ms blokk, sett inn spawn_time -variabelen der. Logikken inne i blokken er enkel - hvis det totale antallet fiender på slagmarken er mindre enn maksimalt tillatte antall fiender, legg til en fiende til fjendens_sprite_list og legg til 200 (går til høyre) retning for den fienden.

Deretter legger vi til noen grafiske effekter i den på opprettede sprite of kind Enemy -blokken, legger den på en tilfeldig tom flis og kaller pick_direction -funksjonen for denne sprite. In on sprite of kind Enemy hits wall, kaller vi den samme funksjonen, pick_direction.

Hva er i den funksjonen? Her begynner ting å bli litt kompliserte, så hold ut. Det er 50 prosent sjanse for at fiendtlig tank går opp og 50 prosent av den går ned - vi endrer sprite deretter. Det eneste trikset her er at vi også må endre verdien som tilsvarer den bestemte fiendtanken i fiende_direksjoner_liste til den nye retningen, så vi skulle få den til å skyte kuler i riktig retning. For det finner vi indeksen til fiendens sprite i fiende_spritt_liste og endrer elementets verdi i fiendens_retnings liste.

Til slutt, la oss legge til skudd som skyter. Vi legger til en ny spilloppdatering hver 500 ms blokk og legger et for -element i fiende_spritt_list. Med 30% sjanse vil en fiendtlig sprite skyte fiendtlig prosjektil i bevegelsesretning.

Hvis vi starter spillet i simulering nå, kan vi se vår gule tank og fiendtlige stridsvogner dukke opp på samme punkt og gå inn i tomt rom. Vi kan skyte og de kan skyte vår gule tank, men ingenting ville skje. Det føles så meningsløst fremdeles:) La oss legge til dekorasjoner og spillmekanikk som det siste trinnet.

Trinn 3: 42 i spillet

42 i spillet
42 i spillet
42 i spillet
42 i spillet
42 i spillet
42 i spillet

Vi skal starte dette trinnet med å legge til liv og poengsum fra Info -fanen og sette liv til 10 og score til null. Deretter legger vi til blokkeringsflisekart til…. Tegn filkartet for å se ut som du ser på skjermbildet ovenfor. Ikke glem å legge til veggene!

La oss legge til på sprite of kind Projectile overlapper andreSprite of kind Player - dette er når fiendens kuler treffer vår gule tank. Vi må sørge for at disse prosjektilene er fiendens kuler og ikke våre egne, så vi legger til at hvis tilstanden er i blokk og hvis den evalueres som sann, så trekker vi en fra livstallet. I likhet med det, i en annen blokk på sprite of kind Prosjektil overlapper andreSprite of kind Enemy sørger vi for at prosjektil er et prosjektil fra gul tank, og hvis denne tilstanden vurderes som True, ødelegger vi otherSprite (fiendens tank), fjerner den fra listen av enemy_sprite_list og legg til en for å score.

Det siste er seier og nederlag - for seier, vil vi sjekke om poengsummen er høyere eller lik 10 i evig blokk. Hvis det er det, viser vi seiersskjermen. Og i life zero block viser vi Game Over -skjermen.

Prøv det nå i simuleringen for å se om spillet kjører som forventet. Last den deretter opp til GameGo og nyt å knuse fiendens stridsvogner!

Trinn 4: Uendelig spill og forbedringer

Uendelig spill og forbedringer
Uendelig spill og forbedringer

I vårt GitHub -depot kan du laste ned to filer for Makecode arkade - den ene er nøyaktig den samme du ville få hvis du følger denne instrukserbare og den andre er en oppgradert versjon, som har tilfeldig generert nivåprogresjon. Den har 10 nivåer, hver genereres tilfeldig med økt antall fiender på hvert påfølgende nivå.

Og selvfølgelig er det enda flere ting du eller elevene dine kan legge til i spillet i tillegg til det! Det er bedre musikk, vegger som kan brytes, forskjellige seiersforhold og så videre!

Hvis du lager en forbedret versjon av spillet, del det i kommentarene nedenfor! For mer informasjon om GameGo og annen maskinvare for produsenter og STEM -lærere, besøk vårt nettsted, https://tinkergen.com/ og abonner på bloggen vår.

TinkerGen har startet en Kickstarter -kampanje for MARK (Make A Robot Kit), et robotsett for undervisning i koding, robotikk, AI!

Anbefalt: