Indholdsfortegnelse:

Battle City Remake på GameGo With Makecode Arcade: 4 trin (med billeder)
Battle City Remake på GameGo With Makecode Arcade: 4 trin (med billeder)

Video: Battle City Remake på GameGo With Makecode Arcade: 4 trin (med billeder)

Video: Battle City Remake på GameGo With Makecode Arcade: 4 trin (med billeder)
Video: Battle City Remake on GameGo with Makecode Arcade 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 vil vi prøve at genskabe et klassisk Battle City tankskydespil, der oprindeligt blev produceret og udgivet i 1985 af Namco til Nintendo Entertainment System (NES). I det originale spil styrer spilleren en tank og skyder projektiler for at ødelægge fjendtlige kampvogne. Fjendens kampvogne forsøger at ødelægge spillerens base, såvel som spillerens tank selv. Vi foretager en vis ændring af spillet for bedre at imødekomme blokprogrammeringspraksis med GameGo, men vores genindspilning vil stadig bevare en masse lighed med det originale spil. Lad os begynde!

Forbrugsvarer

GameGo

Trin 1: Vores Alter -ego - Gul tank

Vores Alter -ego - Gul tank
Vores Alter -ego - Gul tank

Åbn Makecode Arcade på https://arcade.makecode.com/ og klik på nyt projekt. Vi begynder med at lave vores alter-ego den gule tank. Vælg Indstil mySprite til sprite af slags spillerblok og tegn en gul tank vendt opad som vores startsprite, sæt den blok inde i startblokken. Tilføj flytte mySprite med knapper blok. Nu har vi en tank, som vi kan flytte med knapper i simulering! Fantastisk, men det vender altid i samme retning, selv når vi bevæger os ned eller sidelæns …

For at korrigere det, lad os tilføje fire flere blokke, en for hver retningsknap. Opret en ny variabel, kaldet retning - vi gemmer vores tankers bevægelsesretning i den, 100 svarer til ned, -100 svarer til op, 200 til højre og -200 til venstre. Hvorfor disse tal? Du vil se senere, når vi tilføjer de projektiler, som vores tank vil affyre. Logikken inden for hver fire af disse blokke er meget enkel - vi kontrollerer, om ny retning (fra knappetryk) er den samme som retning før. Hvis det er tilfældet, foretager vi stort set ingen ændringer. Hvis det ikke er det, ændrer vi tankens sprite, og i tilfælde med nedadgående og venstre retning vender vi spriteens billede for at undgå at tegne yderligere sprites. Lad os endelig tildele startværdien af retning til -100 (tank opad), da det er sådan vores tank starter spillet. Prøv at flytte den gule tank nu, sprite vil ændre sig i henhold til bevægelsesretningen nu! Fremragende, lad os nu tilføje kugler.

Vi affyrer kugler med et projektil til et projektil (tegner en lille sølv firkant til den sprite) fra mySprite med vx vy hastigheder. Inde i on -knappen En trykket blok skal vi kontrollere den absolutte retningsværdi for at se, om den gule tank vender op/ned af venstre/højre. Vi fortsætter derefter med at affyre projektilet med variablen hastighedsretning -derfor havde vi -100/100/-200/200 for retningsværdier.

Nu har vi en gul tank, der kan affyre projektiler og bevæge sig. Hvis gule simulerede tanke kunne have en følelse, ville det helt sikkert føles ensomt i dette tomme tomrum uden fjender og ting at gøre. Så lad os tilføje fjender til det næste trin, så det kan fordrive tiden.

Trin 2: Få fjenderne frem

Få fjenderne frem
Få fjenderne frem
Få fjenderne frem
Få fjenderne frem

Vi starter dette trin med at oprette en flok nye variabler: to arrays (en til at holde fjendtlige sprites og en anden til at holde fjendens retninger), gyde -tidsvariabel til lagring af tidsperioden mellem gyder, fjendtælling for lagring af maksimalt antal fjender på samme tid. Vi tilføjer også to projektiler (projektil og fjendtligt projektil), der skyder ind på startblokken - det hjælper os med at undgå en fejl senere.

Næste opretter vi på spilopdatering hver … ms blok, indsætter spawn_time variabel der. Logikken inde i blokken er enkel - hvis det samlede antal fjender på slagmarken er mindre end det maksimalt tilladte antal fjender, tilføj en fjende til fjendens_sprite_list og tilføj 200 (går til højre) retning for den fjende.

Dernæst tilføjer vi i den on -created sprite of kind Enemy -blok nogle grafiske effekter, placerer den på en tilfældig tom flise og kalder pick_direction -funktionen til denne sprite. I on sprite of kind Enemy hits wall kalder vi den samme funktion, pick_direction.

Hvad er der i den funktion? Her begynder tingene at blive lidt komplicerede, så vent. Der er 50 procent chance for at fjendtlig tank går op og 50 procent af den går ned - vi ændrer sprite i overensstemmelse hermed. Det eneste trick her er, at vi også skal ændre værdien, der svarer til den pågældende fjendtlige tank i fjendens_direktioner_liste til den nye retning, så vi ville få den til at affyre kugler i den rigtige retning. Til det finder vi indekset over fjendens sprite i fjendens_sprite_liste og ændrer elementets værdi i listen over fjender_direktioner.

Lad os endelig tilføje skud, der affyrer. Vi tilføjer endnu en spilopdatering hver 500 ms blok og sætter et for -element i fjendens_sprite_liste. Med 30% chance vil en fjendtlig sprite affyre fjendtligt projektil i dens bevægelsesretning.

Hvis vi starter spillet i simulering nu, kan vi se vores gule tank og fjendtlige kampvogne optræde på samme punkt og gå ind i tomt rum. Vi kan skyde, og de kan skyde vores gule tank, men der ville ikke ske noget. Det føles så blottet for mening stadig:) Lad os tilføje dekorationer og spilmekanik som det sidste trin.

Trin 3: 42 i spillet

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

Vi vil starte dette trin ved at tilføje liv og score fra fanen Info og sætte liv til 10 og score til nul. Derefter tilføjer vi bloksæt flisekort til…. Tegn filkortet for at se sådan ud, som du ser på skærmbilledet ovenfor. Glem ikke at tilføje væggene!

Lad os tilføje på sprite of kind Projektil overlapper andreSprite of kind Player - det er, når fjendens kugler rammer vores gule tank. Vi er nødt til at sikre, at disse projektiler er fjendens kugler og ikke vores egne, så vi tilføjer, at hvis tilstand inden for blok, og hvis den vurderes som sand, så trækker vi en fra livstælling. På samme måde som i en anden blok på sprite af slagsen Projektil overlapper andreSprite of kind Enemy sørger vi for, at projektil er et projektil fra gul tank, og hvis denne tilstand vurderes som sand, ødelægger vi otherSprite (fjendens tank), fjerner det fra listen af fjendens_spritliste og tilføj en til at score.

Det sidste er sejr og nederlagsbetingelser - for sejr vil vi kontrollere, om scoren er højere eller lig med 10 i evigt blok. Hvis det er det, så viser vi sejerskærmen. Og i life zero -blok viser vi Game Over -skærmen.

Prøv det nu i simuleringen for at se, om spillet kører som forventet. Upload det derefter til GameGo, og nyd at smadre fjendtlige kampvogne!

Trin 4: Uendeligt spil og forbedringer

Uendeligt spil og forbedringer
Uendeligt spil og forbedringer

I vores GitHub -arkiv kan du downloade to filer til Makecode -arkade - den ene er nøjagtig den samme, du ville få, hvis du følger denne instruerbare, og den anden er en opgraderet version, der har tilfældigt genereret niveauprogression. Det har 10 niveauer, hvert enkelt genereres tilfældigt med et øget antal fjender i hvert på hinanden følgende niveau.

Og selvfølgelig er der endnu flere ting, du eller dine elever kan tilføje til spillet oveni det! Der er bedre musik, brydbare vægge, forskellige sejrbetingelser 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 abonnér på vores blog.

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

Anbefalede: