Taula de continguts:

Remake de Battle City a GameGo With Makecode Arcade: 4 passos (amb imatges)
Remake de Battle City a GameGo With Makecode Arcade: 4 passos (amb imatges)

Vídeo: Remake de Battle City a GameGo With Makecode Arcade: 4 passos (amb imatges)

Vídeo: Remake de Battle City a GameGo With Makecode Arcade: 4 passos (amb imatges)
Vídeo: Final Combat (Battle City remake) - 8 bit game 2024, Desembre
Anonim
Image
Image

GameGo és una consola portàtil de jocs retro compatible amb Microsoft Makecode desenvolupada per TinkerGen STEM education. Està basat en el xip STM32F401RET6 ARM Cortex M4 i està dissenyat per a educadors STEM o només per a persones que els agrada divertir-se creant videojocs retro. Podeu seguir aquest tutorial i provar el joc al simulador Makecode Arcade i després executar-lo a GameGo.

En aquest article intentarem recrear un clàssic joc de trets de tancs de Battle City, produït i publicat originalment el 1985 per Namco per a Nintendo Entertainment System (NES). Al joc original, el jugador controla un tanc i dispara projectils per destruir els tancs enemics. Els tancs enemics intenten destruir la base del jugador, així com el mateix tanc del jugador. Farem algunes modificacions al joc per adaptar-nos millor a les pràctiques de programació de blocs amb GameGo, però el nostre remake encara mantindrà una gran similitud amb el joc original. Anem a començar!

Subministraments

GameGo

Pas 1: el nostre alter ego: tanc groc

El nostre Alter-ego - Yellow Tank
El nostre Alter-ego - Yellow Tank

Obriu Makecode Arcade a https://arcade.makecode.com/ i feu clic al nou projecte. Començaré a convertir el nostre alter ego en el tanc groc. Trieu Set mySprite to sprite of kind player player i dibuixeu un dipòsit groc cap amunt com el nostre sprite inicial, poseu-lo dins del bloc inicial. Afegeix move mySprite amb el bloc de botons. Ara tenim un tanc que podem moure amb botons en simulació. Genial, però sempre està orientat a la mateixa direcció, fins i tot quan ens movem cap avall o cap als costats …

Per corregir-ho, afegim quatre blocs més, un per a cada botó de direcció. Creeu una nova variable, anomenada direcció; guardarem la direcció de moviment del nostre tanc, 100 correspondran a baix, -100 correspondran a amunt, 200 per la dreta i -200 per l'esquerra. Per què aquestes xifres? Veureu més endavant, quan afegim els projectils que dispararà el nostre tanc. La lògica de cadascun d’aquests quatre blocs és molt senzilla: comprovem si la nova direcció (a partir del botó) és la mateixa que la direcció anterior. Si és així, bàsicament no fem cap canvi. Si no és així, canviem el sprite del tanc i, en cas que amb la direcció cap avall i cap a l’esquerra, invertim la imatge del sprite per evitar dibuixar sprites addicionals. Finalment, assignem el valor inicial de direcció a -100 (tanc cap amunt), ja que és així com el nostre tanc comença el joc. Proveu de moure el tanc groc ara, el sprite canviarà segons la direcció del moviment ara. Excel·lent, ara afegim vinyetes.

Llançarem bales amb projectil a projectil (dibuixarem un petit quadrat de plata per a aquell sprite) des de mySprite amb velocitats vx vy. A l'interior del botó on hi ha un botó premut, hem de comprovar si hi ha un valor absolut de direcció per veure si el dipòsit groc està cap amunt / avall de l'esquerra / dreta. A continuació, procedim a disparar el projectil amb la velocitat de direcció variable, per això teníem -100 / 100 / -200 / 200 per als valors de direcció.

Ara tenim un tanc groc que pot disparar projectils i moure’s. Si els tancs simulats de color groc poguessin sentir-se, segur que se sentiria sol en aquest buit buit sense enemics i coses a fer. Per tant, per al següent pas, afegim enemics perquè passi el temps.

Pas 2: traieu els enemics

Traieu els enemics
Traieu els enemics
Traieu els enemics
Traieu els enemics

Començarem aquest pas creant un munt de noves variables: dues matrius (una per contenir els sprites enemics i una altra per mantenir les indicacions enemigues), variable de temps de generació per emmagatzemar el període de temps entre les generacions, el recompte d’enemics per emmagatzemar el màxim nombre d’enemics. al mateix temps. També afegirem dos projectils (projectil i projectil enemic) disparant al bloc inicial, que ens ajudaran a evitar un error més endavant.

A continuació, creem a l’actualització del joc cada … bloc MS, hi introduïu la variable spawn_time. La lògica dins del bloc és senzilla: si el nombre total d’enemics al camp de batalla és inferior al nombre màxim permès d’enemics, afegiu un enemic a la llista enemic_prenta i afegiu 200 (anar a la dreta) direcció per a aquell enemic.

A continuació, al bloc de tipus enemic Sprite creat, afegim alguns efectes gràfics, el posem en un mosaic buit aleatori i cridem a la funció pick_direction per a aquest sprite. En un sprite de tipus Enemy hits wall, anomenem la mateixa funció pick_direction.

Què hi ha en aquesta funció? Aquí és on les coses comencen a complicar-se una mica, així que aguanteu-vos. Hi ha un 50 per cent de probabilitats que el tanc enemic pugi i el 50 per cent baixi; canviem el sprite en conseqüència. L’únic truc aquí és que també hem de canviar el valor corresponent a aquell tanc enemic concret a la llista enemic_direccions_ a la seva nova direcció, de manera que tindríem bales en la direcció correcta. Per a això, trobem l’índex de sprite enemic a la llista enemic_premta_ i canviem el valor d’aquest element a la llista de direccions_enemic.

Finalment, afegim trets disparant. Afegim una altra actualització del joc cada bloc de 500 ms i posem un per a l'element enemic_sprite_list. Amb un 30% de probabilitats, un sprite enemic dispara un projectil enemic en la seva direcció de moviment.

Si llancem el joc en simulació ara, podrem veure el nostre tanc groc i els tancs enemics que apareixen al mateix punt i van a l’espai buit. Podem disparar i ells poden disparar al nostre tanc groc, però no passaria res. Encara se sent sense sentit:) Afegim la decoració i la mecànica del joc com a darrer pas.

Pas 3: 42 del joc

42 del joc
42 del joc
42 del joc
42 del joc
42 del joc
42 del joc

Començarem aquest pas afegint vida i puntuació des de la pestanya Informació i establint la vida a 10 i puntuant a zero. A continuació, afegim el mapa de mosaic del conjunt de blocs a …. Dibuixeu el mapa de fitxers per tal que sembli el que veieu a la captura de pantalla de més amunt. No oblideu afegir les parets!

Afegim un sprite de mena de projectils que es superposen a un altre jugador de mena: aquí és quan les bales de l’enemic impacten contra el nostre tanc groc. Hem d’assegurar-nos que aquests projectils siguin bales de l’enemic i no siguin nostres, de manera que afegirem que si la condició dins del bloc i si s’avalua com a vertader, restem una del recompte de vida. De manera similar, en un altre bloc de sprite de mena Projecte es sobreposa a un altre de tipus Enemic ens assegurem que el projectil sigui un projectil del tanc groc i, si aquesta condició s’avalua com a True, destruïm otherSprite (el tanc enemic), l’eliminem de la llista de la llista enemiga_premta i afegiu-ne una per puntuar.

L’últim són les condicions de victòria i derrota: per obtenir la victòria, comprovarem si la puntuació és més alta o és igual a 10 al bloc definitiu. Si és així, mostrem la pantalla de la victòria. I al bloc zero de la vida, mostrem la pantalla Game Over.

Ara proveu-ho a la simulació per veure si el joc funciona com s’esperava. A continuació, pengeu-lo a GameGo i gaudiu de trencar tancs enemics.

Pas 4: Joc sense fi i millores

Joc sense fi i millores
Joc sense fi i millores

Al nostre dipòsit de GitHub podeu descarregar dos fitxers per a Makecode arcade: un és exactament el mateix que obtindríeu si seguiu aquesta instrucció i l’altre és una versió actualitzada, que ha generat aleatòriament una progressió del nivell. Té 10 nivells, cadascun es genera aleatòriament i augmenta el nombre d'enemics en cada nivell successiu.

I, per descomptat, encara hi ha més coses que vosaltres o els vostres alumnes podeu afegir al joc. Hi ha millor música, parets trencables, diferents condicions de victòria, etc.

Si feu una versió millorada del joc, compartiu-la als comentaris següents. Per obtenir més informació sobre GameGo i altres elements de maquinari per a fabricants i educadors STEM, visiteu el nostre lloc web, https://tinkergen.com/ i subscriviu-vos al nostre bloc.

TinkerGen ha començat una campanya Kickstarter per a MARK (Make A Robot Kit), un kit de robot per ensenyar codificació, robòtica i IA.

Recomanat: