Obsah:

Remake Battle City v GameGo s Makecode Arcade: 4 kroky (s obrázkami)
Remake Battle City v GameGo s Makecode Arcade: 4 kroky (s obrázkami)

Video: Remake Battle City v GameGo s Makecode Arcade: 4 kroky (s obrázkami)

Video: Remake Battle City v GameGo s Makecode Arcade: 4 kroky (s obrázkami)
Video: My Battle City 1985 Full Remake! 2024, November
Anonim
Image
Image

GameGo je retro herná prenosná konzola kompatibilná s Microsoft Makecode vyvinutá spoločnosťou TinkerGen STEM education. Je založený na čipe STM32F401RET6 ARM Cortex M4 a je vyrobený pre pedagógov STEM alebo len pre ľudí, ktorí sa radi zabávajú vytváraním retro videohier. Môžete postupovať podľa tohto tutoriálu a vyskúšať si hru v simulátore Makecode Arcade a potom ju spustiť na GameGo.

V tomto článku si vyskúšame vytvoriť klasickú tankovú strieľačku Battle City, pôvodne vyrobenú a publikovanú v roku 1985 spoločnosťou Namco pre Nintendo Entertainment System (NES). V pôvodnej hre hráč ovláda tank a strieľa projektilmi, aby zničil nepriateľské tanky. Nepriateľské tanky sa pokúšajú zničiť hráčsku základňu, ako aj samotný hráčsky tank. Vykonáme určité úpravy hry, aby lepšie vyhovovali postupom blokového programovania v programe GameGo, ale náš remake si stále zachová veľa podobností s pôvodnou hrou. Poďme začať!

Zásoby

GameGo

Krok 1: Naše Alter -ego - žltý tank

Naše Alter -ego - žltý tank
Naše Alter -ego - žltý tank

Otvorte Makecode Arcade na https://arcade.makecode.com/ a kliknite na nový projekt. Začneme tým, že urobíme z nášho alter ega žltý tank. Vyberte položku Nastaviť mySprite na sprite druhu bloku hráčov a nakreslite žltý tank smerom nahor ako náš štartovací sprite, vložte tento blok do štartovacieho bloku. Pridajte presun mySprite pomocou bloku tlačidiel. Teraz máme tank, s ktorým môžeme v simulácii pohybovať pomocou tlačidiel! Skvelé, ale vždy smeruje rovnakým smerom, aj keď sa pohybujeme nadol alebo nabok …

Aby sme to napravili, pridajme ďalšie štyri bloky, jeden pre každé tlačidlo smeru. Vytvorte novú premennú, ktorá sa nazýva smer - uložíme do nej smer pohybu našej nádrže, 100 bude zodpovedať dole, -100 bude zodpovedať hore, 200 za pravé a -200 za ľavé. Prečo tieto čísla? Neskôr uvidíte, keď k tomu pridáme projektily, ktoré naša nádrž vystrelí. Logika v každom zo štyroch týchto blokov je veľmi jednoduchá - skontrolujeme, či je nový smer (stlačením tlačidla) rovnaký ako smer predtým. Ak je, v zásade nerobíme žiadne zmeny. Ak nie, vymeníme škriatka nádrže a v prípade smeru nadol a doľava obrátime obrázok škriatka, aby sme sa vyhli kresleniu ďalších škriatkov. Nakoniec priradíme počiatočnú hodnotu smeru k -100 (tank nahor), pretože takto začína hru náš tank. Skúste teraz presunúť žltú nádrž, škriatok sa teraz zmení podľa smeru pohybu! Výborne, teraz pridáme guľky.

Budeme strieľať strely s nastaveným projektilom na projektil (nakreslite malý strieborný štvorec pre tento sprite) z mySprite s rýchlosťami vx vy. Vo vnútri stlačeného bloku musíme skontrolovať absolútnu hodnotu smeru, aby sme zistili, či žltá nádrž smeruje hore/dole vľavo/vpravo. Potom pristúpime k odpáleniu strely s premennou rýchlosti smeru -preto sme pre hodnoty smeru mali -100/100/-200/200.

Teraz máme žltý tank, ktorý dokáže strieľať projektily a pohybovať sa. Ak by žlté simulované tanky mohli mať pocit, určite by sa cítili osamelí v tejto prázdnej prázdnote bez nepriateľov a vecí, ktoré je potrebné robiť. V ďalšom kroku teda pridajme nepriateľov, aby prešli časom.

Krok 2: Vyhoďte nepriateľov

Vyveďte nepriateľov
Vyveďte nepriateľov
Vyveďte nepriateľov
Vyveďte nepriateľov

Tento krok začneme vytvorením skupiny nových premenných: dve polia (jedno na držanie nepriateľských sprajtov a druhé na držanie nepriateľských smerov), časová premenná na spustenie na uloženie časového obdobia medzi potermi, počet nepriateľov na uloženie maximálneho počtu nepriateľov v rovnakom čase. Pridáme tiež dva projektily (projektil a nepriateľský projektil), ktoré vystrelia na štartovací blok - to nám pomôže vyhnúť sa chybe neskôr.

Ďalej vytvárame pri aktualizácii hry každý … ms blok, vložte tam premennú spawn_time. Logika vo vnútri bloku je jednoduchá - ak je celkový počet nepriateľov na bojisku menší ako maximálny povolený počet nepriateľov, pridajte nepriateľa do zoznamu nepriateľov_príspevok a pridajte 200 (vpravo) pre tohto nepriateľa.

Ďalej do bloku Enemy vytvoreného sprite druhu Enemy pridáme niekoľko grafických efektov, umiestnime ho na náhodnú prázdnu dlaždicu a zavoláme funkciu pick_direction pre tohto sprite. V prípade sprite druhu Enemy narazí na stenu a nazývame rovnakú funkciu, pick_direction.

Čo je v tej funkcii? Tu sa veci začínajú trochu komplikovať, takže vydržte. Existuje 50 -percentná pravdepodobnosť, že nepriateľský tank stúpne a 50 percent z neho klesne - podľa toho zmeníme sprite. Jediným trikom je, že musíme tiež zmeniť hodnotu zodpovedajúcu konkrétnemu nepriateľskému tanku v zozname nepriateľov_directions_list na jeho nový smer, aby sme nechali strieľať guľky správnym smerom. Na to nájdeme index nepriateľského sprite v zozname nepriateľov_sprite_list a zmeníme hodnotu tejto položky v zozname nepriateľských smerov.

Na záver pridajme výstrely. Každých 500 ms blok pridávame k aktualizácii hry ďalšie položky a do zoznamu nepriateľov_sprite_list zaradíme položku for. S 30% šancou nepriateľský škriatok vystrelí nepriateľský projektil v smere pohybu.

Ak teraz spustíme hru v simulácii, môžeme vidieť, ako sa náš žltý tank a nepriateľské tanky objavujú v rovnakom bode a odchádzajú do prázdneho priestoru. My môžeme strieľať a oni môžu strieľať do nášho žltého tanku, ale nič by sa nestalo. Stále sa nám to zdá také nezmyselné:) Pridajme dekorácie a hernú mechaniku ako posledný krok.

Krok 3: 42 hry

42 hry
42 hry
42 hry
42 hry
42 hry
42 hry

Tento krok začneme pridaním života a skóre na karte Informácie a nastavením života na 10 a skórovaním na nulu. Potom pridáme mapu dlaždíc nastavenú na blok do …. Nakreslite mapu súboru tak, aby vyzerala podobne ako na obrázku vyššie. Nezabudnite pridať steny!

Pridajme sprite druhu Projectile prekrýva otherSprite of kind Player - to je, keď guľky nepriateľa zasiahnu náš žltý tank. Musíme sa uistiť, že tieto projektily sú guľkami nepriateľa, a nie našimi, preto dodáme, že ak je podmienka v bloku a ak bude vyhodnotená ako pravdivá, odpočítame ju od počtu životov. Podobne ako to, v inom bloku na sprite druhu Projectile překrýva otherSprite of kind Enemy zabezpečujeme, aby projektil bol projektil zo žltého tanku a ak je tento stav vyhodnotený ako True, zničíme otherSprite (nepriateľský tank), odstráňte ho zo zoznamu nepriateľského_sprite_listu a pridajte ho do skóre.

Posledná vec sú podmienky víťazstva a porážky - pri víťazstve skontrolujeme, či je skóre vyššie alebo sa rovná 10 v navždy bloku. Ak je, ukážeme víťaznú obrazovku. A v nulovom bloku života zobrazujeme obrazovku Game Over.

Teraz to vyskúšajte na simulácii a zistite, či hra beží podľa očakávania. Potom ho nahrajte do GameGo a užívajte si rozbíjanie nepriateľských tankov!

Krok 4: Nekonečná hra a vylepšenia

Nekonečná hra a vylepšenia
Nekonečná hra a vylepšenia

V našom úložisku GitHub si môžete stiahnuť dva súbory pre Makecode arcade - jeden je presne taký istý, aký by ste získali, keby ste sa riadili týmto pokynom, a druhý je aktualizovanou verziou, ktorá má náhodne generovaný postup na úrovni. Má 10 úrovní, každá je generovaná náhodne so zvýšeným počtom nepriateľov v každej nasledujúcej úrovni.

A samozrejme je ešte viac vecí, ktoré môžete vy alebo vaši študenti do hry navyše pridať! Je tu lepšia hudba, rozbitné múry, rôzne podmienky víťazstva a tak ďalej!

Ak vytvoríte vylepšenú verziu hry, podeľte sa o ňu v nižšie uvedených komentároch! Viac informácií o GameGo a inom hardvéri pre tvorcov a pedagógov STEM nájdete na našej webovej stránke https://tinkergen.com/ a prihláste sa na odber nášho blogu.

TinkerGen zahájil kampaň Kickstarter pre MARK (Make A Robot Kit), robotickú súpravu na výučbu kódovania, robotiky, AI!

Odporúča: