Sadržaj:

Platformer s beskonačnim razinama na GameGo s Makecode Arcade: 5 koraka (sa slikama)
Platformer s beskonačnim razinama na GameGo s Makecode Arcade: 5 koraka (sa slikama)

Video: Platformer s beskonačnim razinama na GameGo s Makecode Arcade: 5 koraka (sa slikama)

Video: Platformer s beskonačnim razinama na GameGo s Makecode Arcade: 5 koraka (sa slikama)
Video: 40 эпических ролевых игр в стиле Souls для ПК всех времен 2024, Srpanj
Anonim
Image
Image

GameGo je retro prijenosna igraća konzola kompatibilna s Microsoft Makecodeom koju je razvilo TinkerGen STEM obrazovanje. Temelji se na STM32F401RET6 ARM Cortex M4 čipu i napravljen je za STEM edukatore ili samo ljude koji se vole zabavljati stvarajući retro video igre. Možete slijediti ovaj vodič i isprobati igru u Makecode Arcade simulatoru, a zatim je pokrenuti na GameGo -u.

U ovom ćemo članku napraviti platformersku igru s beskonačnim nasumično generiranim razinama. U platformi, igrač kontroliran lik mora skakati i penjati se između suspendiranih platformi izbjegavajući prepreke. Okoliš često ima neravan teren različite visine koji se mora prijeći. Igrač često ima određenu kontrolu nad visinom i udaljenošću skokova kako ne bi dopustio da im lik padne u smrt ili propusti potrebne skokove. Implementirat ćemo sve ove osnovne elemente, a također ćemo dodati prilagođenu funkciju koja će generirati nove razine kad dođemo do kraja posljednje. Započnimo!

Pribor

GameGo

Korak 1: Heroj

Heroj
Heroj

Kao prvi korak stvorit ćemo naš alter-ego. Moje vještine crtanja su prilično loše pa sam se odlučio odlučiti za jednu iz Galerije;) Za razliku od prethodne igre koju smo napravili, u ovom se platformiru naš lik može kretati samo lijevo i desno, a može i skakati. Dakle, umjesto da imamo dva različita sprajta za glavnog lika, ovaj put je dovoljan jedan - možemo samo preokrenuti sliku sprite kad promijenimo smjer.

Prvo što trebate učiniti je dodati pozadinu i kartu pločica. Odabrao sam dugačku mapu pločica 32x8 - za prvu razinu crtat ćemo je ručno, kao na snimci zaslona 2. Zatim dodajemo našeg lika koji se može igrati s postavljenim mySpriteom na sprite vrste Block Player i postavljamo ga na vrh pločice 0-5. Također smo postavili kameru da se kreće s karakterom koji se može igrati i kontroliramo njezino kretanje lijevo i desno - brzinu vy kretanja postavit ćemo na 0, budući da naš lik ne bi trebao moći slobodno plutati na karti u smjeru y. Dodajte dva bloka pritisnuta na gumb, jedan za lijevi gumb, jedan za desni. Kad pritisnete lijevu tipku, prije pritiska na tipku provjeravamo je li naš smjer bio "lijevo". Da je tako, samo nastavljamo ići lijevo. Da nije tako, moramo okrenuti sliku duha našeg lika. Slična logika za desno kretanje.

Za sada je sve u redu, čini se da je jedini problem što čini se da naš junak ne može svladati nijednu prepreku. Stoga moramo dodati i skakanje. Pratit ćemo kontrole za pritiskanje tipke gore, a kada se otkrije, postavit ćemo promjenjivo skakanje na 1, zabilježiti vrijeme početka preskakanja i postaviti brzinu sprite znaka vy na -200 (ide prema gore). Zatim ćemo nakon određenog vremenskog razdoblja postaviti brzinu na 200 (spuštanje), kako naš junak ne bi pucao u nebo kao raketa.

Mislim da smo sada stvorili heroja vrijednog izazova! Pa, gdje je izazov?

Korak 2: Neprijatelji

Neprijatelji
Neprijatelji

Koristit ćemo strukturu niza za spremanje sprajtova neprijatelja. Za neprijatelje ćemo uzeti mali prečac i upotrijebit ćemo šišmiše:) a ne referencu koronavirusa, samo šišmiši mogu letjeti, zato im nećemo morati "simulirati" gravitaciju, kao što to činimo s našim likom koji se može igrati. Upotrijebite kreirani sprite vrste neprijateljskog bloka za postavljanje novostvorenih šišmiša na nasumičnu ploču s mrijestom (označenu malom bijelom oznakom) i postavljanje njihove vx brzine na -10 (polako se pomiče udesno). Zatim unutar ažuriranja igre svakih 2000 ms bloka ponavljamo svaku stavku liste neprijatelja_ i nasumično mijenjamo njihov smjer, a po potrebi i okrećemo sprajtove šišmiša (kako bi odrazili promjenu smjera kretanja). Konačno, dodajemo sprite vrste Player koji se preklapa s drugim blokom neprijatelja vrste neprijatelja, gdje jednostavno provjeravamo je li igrač već pogođen. Ako nije, oduzeli smo jedan život, postavite hit flag na 1 (pogođen je) i pokrenite mjerač vremena. Nakon što je prošlo 500 ms od zadnjeg pogotka, mijenjamo zastavicu na 0. To činimo kako bi igrač izbjegao izgubiti previše svojih dragocjenih života nakon sudara s neprijateljem.

Provjerimo kako nam ide. Pa, prizor se svakako čini živahnijim sa svim šišmišima koji lete uokolo i grizu našeg igrača. Sada nam je potrebno oružje za činjenje naših herojskih djela!

Korak 3: Oružje

Oružje
Oružje

Za oružje sam inspiraciju crpio iz stare Nintendo igre o dva brata vjeverice:) Dodajmo razloge gajbi na razinu, na sličan način kao što dodajemo neprijatelje. Također smo inicijalizirali varijablu has_crate na -1, što znači da naš lik ne nosi sanduk. U on -line sprite vrste Player se preklapa s drugim blokom FoodSprite vrste Food, provjeravamo držimo li već sanduk, a ako nemamo, postavljamo varijablu has_crate na indeks sprate sanduka na popisu. Zatim u blok za ažuriranje igre pomičemo taj sprite zajedno sa spritetom igrača i ako se pritisne gumb A, mijenjamo vx brzinu sanduka na 1200 ili -1200 (ovisno o smjeru kretanja lika). Također smo opet vratili varijablu has_crate na -1 i promijenili vrstu sprite sanduka koji je upravo lansiran u zrak u Projektil.

Na kraju, potrebno nam je da sanduci zapravo unište neprijatelje pri pokretanju (ali ne i kada neprijatelji nasumično naiđu na sanduk! Zato smo sanduke dodijelili za upisivanje hrane i promijenili ga u projektil tek kad se pokrenu) i samouništavanje prilikom udarca zid. Za to koristimo drugi na sprite vrste projektila koji se preklapa s drugim blokom neprijatelja vrste - u tom slučaju uništavamo oba spritita i povećavamo rezultat za jedan. Ako projektil udari u zid, uništavamo njegov duh.

Skoro gotovo! Igra se sada može igrati, ali teško da ima izazova - samo jedna razina i prilično jednostavna. Mogli bismo ručno napraviti više razina ili napisati algoritam koji bi za nas automatski generirao te razine - iako one naravno neće biti tako lijepe kao razine koje je napravio čovjek.

Korak 4: Beskrajne avanture

Beskrajne avanture
Beskrajne avanture
Beskrajne avanture
Beskrajne avanture
Beskrajne avanture
Beskrajne avanture

Funkcija za generiranje slučajne razine u početku izgleda pomalo zastrašujuće, ali to je zapravo jednostavan niz koraka za algoritamsko generiranje nove razine, na način da je nova razina prihvatljiva za igranje likova. Prvo, vodimo brigu o tome da naš lik dovedemo na tu novu razinu - koristeći sprite vrste preklapanja igrača … na lokaciji - koristimo pločicu vrata portala kao okidač za novu razinu. U funkciji generated_level inicijaliziramo varijable row, col i chance. Također stvaramo novu kartu pločica, iste veličine kao i prije, ali praznu. Evo malo upozorenja - kako bi se koristio set … u retku karti karti … col … blok, karta pločica mora imati ove određene pločice --- to je pomalo kontra intuitivno i možda greška u Makecodeu. Dakle, ono što trebate učiniti je stvoriti kartičnu ploču, staviti sve vrste pločica koje želite koristiti u nasumično generiranje I zatim ih izbrisati.

Ručno smo stavili prvu pločicu (0x6) i player na nju. Zatim 30 puta ponavljamo sljedeći korak - sljedeći korak je jednostavan niz provjera True -False, koje odlučuju o tome hoćemo li sljedeći stupac biti 1) na istoj razini kao prethodni 2) jedan gore ili 3) jedan dolje. Također postoji vrlo mala vjerojatnost da će sljedeća pločica biti lava pločica - ne želimo ih previše! Nakon svake generirane pločice prostor ispod nje ispunjavamo lavom - samo radi ljepote. Kao posljednji korak, dodajemo neprijatelje i sanduke te ih postavljamo na nasumične mrijestile pločice.

Korak 5: Avantura počinje

Avantura počinje
Avantura počinje

Voila! Završili smo naš platformer i naš junak može krenuti u beskrajnu avanturu, pobjeđujući šišmiše i uništavajući sanduke. ako naiđete na probleme, možete preuzeti kôd iz našeg spremišta GitHub.

To je samo nacrt i definitivno se mogu napraviti neka poboljšanja, na primjer različite vrste neprijatelja, bonusi, stvaranje bolje razine i tako dalje. Ako ipak napravite poboljšanu verziju igre, podijelite je u komentarima ispod! Za više informacija o GameGou i drugom hardveru za proizvođače i STEM edukatore posjetite našu web stranicu, https://tinkergen.com/ i pretplatite se na naš bilten.

TinkerGen je stvorio Kickstarter kampanju za MARK (Make A Robot Kit), komplet robota za učenje kodiranja, robotike, AI!

Preporučeni: