Përmbajtje:

Platformer me nivele të pafund në GameGo With Makecode Arcade: 5 hapa (me fotografi)
Platformer me nivele të pafund në GameGo With Makecode Arcade: 5 hapa (me fotografi)

Video: Platformer me nivele të pafund në GameGo With Makecode Arcade: 5 hapa (me fotografi)

Video: Platformer me nivele të pafund në GameGo With Makecode Arcade: 5 hapa (me fotografi)
Video: Top 10 Best NEW Games & Creations | Dreams PS4/PS5 2024, Korrik
Anonim
Image
Image

GameGo është një tastierë portative e lojërave retro e pajtueshme me Microsoft Makecode e zhvilluar nga arsimi TinkerGen STEM. Ai bazohet në çipin STM32F401RET6 ARM Cortex M4 dhe është bërë për edukatorët STEM ose thjesht për njerëzit që duan të argëtohen duke krijuar video lojëra retro. Ju mund ta ndiqni këtë tutorial dhe ta provoni lojën në imituesin Makecode Arcade dhe më pas ta ekzekutoni në GameGo.

Në këtë artikull ne do të bëjmë një lojë platformer me nivele të pafundme të krijuara rastësisht. Në një platformer, karakteri i kontrolluar nga lojtari duhet të hidhet dhe të ngjitet midis platformave të pezulluara duke shmangur pengesat. Mjediset shpesh paraqesin terren të pabarabartë me lartësi të ndryshme që duhet të përshkohen. Lojtari shpesh ka një kontroll mbi lartësinë dhe distancën e kërcimeve për të mos lejuar që karakteri i tyre të bjerë në vdekje ose të humbasë kërcimet e nevojshme. Ne do të zbatojmë të gjithë këta elementë bazë dhe gjithashtu do të shtojmë një funksion të personalizuar që do të gjenerojë nivele të reja ndërsa arrijmë në fundin e këtij të fundit. Le të fillojmë!

Furnizimet

Lojë Shko

Hapi 1: Heroi

Heroi
Heroi

Si hap i parë ne do të krijojmë alter-egon tonë. Aftësitë e mia të vizatimit janë shumë të këqija, kështu që sapo vendosa të përdor një nga Galeria;) Ndryshe nga loja e mëparshme që kemi bërë, në këtë platformer karakteri ynë i luajtur mund të lëvizë vetëm majtas dhe djathtas dhe gjithashtu mund të kërcejë. Pra, në vend që të kemi dy shpifje të ndryshme për personazhin kryesor, njëra është e mjaftueshme këtë herë - ne thjesht mund të rrokullisim imazhin e Sprite kur ndryshojmë drejtim.

Gjëja e parë që duhet të bëni është të shtoni sfondin dhe hartën e pllakave. Unë kam zgjedhur hartën e pllakave të gjata 32x8 - për nivelin e parë do ta vizatojmë me dorë, si në pamjen e ekranit 2. Pastaj shtojmë karakterin tonë të luajtshëm me set mySprite në sprite të llojit të bllokut të lojtarëve dhe e vendosim atë në krye të pllakës 0-5 Me Ne gjithashtu vendosëm që kamera të lëvizë me karakter të luajtshëm dhe të kontrollojë lëvizjen e saj të majtë dhe të djathtë - ne do të vendosim shpejtësinë vy të lëvizjes në 0, pasi karakteri ynë nuk duhet të jetë në gjendje të notojë lirshëm në hartë përgjatë drejtimit y. Shtoni dy blloqe të shtypura në butonin…, një për butonin e majtë, një për të djathtën. Kur shtypet butoni i majtë, ne kontrollojmë nëse drejtimi ynë ishte "i majtë" para se të shtypim butonin. Nëse ishte, ne thjesht vazhdojmë të shkojmë majtas. Nëse nuk do të ishte, ne duhet të rrokullisim imazhin sprite të karakterit tonë. Logjikë e ngjashme për lëvizjen e duhur.

Gjithçka mirë tani për tani, problemi i vetëm duket se heroi ynë nuk mund të kapërcejë asnjë pengesë. Pra, duhet të shtojmë kërcimin. Ne do të monitorojmë kontrollet për shtypjen e butonit lart dhe kur të zbulohet, do të vendosim kërcimin e ndryshueshëm në 1, do të shënojmë kohën kur kanë filluar lëvizjet e kërcimit dhe do të vendosim shpejtësinë e shpejtë të karakterit vy në -200 (duke shkuar lart). Pastaj pas një periudhe të caktuar kohe, ne do të vendosim shpejtësinë në 200 (zbret), kështu që heroi ynë nuk do të gjuante në qiell si një raketë.

Unë mendoj se ne krijuam një hero të denjë për sfidën tani! Epo, ku është sfida?

Hapi 2: Armiqtë

Armiqtë
Armiqtë

Ne do të përdorim një strukturë grup për të ruajtur spritat e armiqve. Për llojin e armiqve ne do të marrim një shkurtore të vogël dhe do të përdorim lakuriqët e natës:) jo një referencë për koronavirusin, thjesht lakuriqët mund të fluturojnë, prandaj nuk do të kemi nevojë të "simulojmë" gravitetin për ta, siç bëjmë me karakterin tonë të luajtshëm. Përdorni në sprite të krijuara të llojit Blloqe të armikut për të vendosur lakuriqët e sapokrijuar në pllakën e pjelljes së rastësishme (të shënuar me një shenjë të vogël të bardhë) dhe vendosni shpejtësinë e tyre vx në -10 (ngadalë shkon djathtas). Pastaj brenda përditësimit të lojës çdo bllok 2000 ms ne përsërisim nëpër secilën artikull të listës së armikut dhe ndryshojmë rastësisht drejtimin e tyre, ndërsa gjithashtu rrotullojmë spritat e lakuriqëve të natës nëse është e nevojshme (për të pasqyruar ndryshimin në drejtimin e lëvizjes). Së fundi, ne shtojmë në sprite të llojit Player mbivendoset me bllokun armik otherSprite of kind, ku bëjmë një kontroll të thjeshtë nëse lojtari është goditur tashmë. Nëse nuk do të kishim zbritur një jetë, vendosni flamurin e goditur në 1 (është goditur) dhe filloni kohëmatësin. Pasi 500 ms që koha e goditjes së fundit kaloi, ne e ndryshojmë goditjen e flamurit në 0. Ne e bëjmë këtë në mënyrë që lojtari të shmangë humbjen e shumë prej jetëve të tij të çmuara pas përplasjes me një armik.

Le të kontrollojmë se si jemi. Epo, skena me siguri duket më e gjallë me të gjitha lakuriqët që fluturojnë përreth dhe kafshojnë lojtarin tonë. Tani na duhet një armë për të bërë veprat tona heroike!

Hapi 3: Arma

Arma
Arma

Për armën, unë po merrja frymëzimin nga një lojë e vjetër Nintendo rreth dy vëllezërve të vegjël:) Le të shtojmë arrat në nivel, në mënyrë të ngjashme që bëjmë me shtimin e armiqve. Ne gjithashtu inicializojmë ndryshoren has_crate në -1, gjë që tregon se karakteri ynë nuk mban një arkë. Në sprite të llojit Player mbivendoset me blloqe të tjera të llojit Spring of kind, ne kontrollojmë nëse tashmë mbajmë një arkë dhe nëse jo, vendosim ndryshoren has_crate në indeksin e sprite arkë në listë. Pastaj në bllokun e azhurnimit të lojës ne lëvizim atë sprite së bashku me sprite të lojtarit dhe nëse shtypet butoni A, ne ndryshojmë shpejtësinë vx të arkës në 1200 ose -1200 (në varësi të drejtimit të lëvizjes së personazhit). Ne gjithashtu vendosëm ndryshoren has_crate përsëri në -1 dhe ndryshojmë llojin e sprite të arkës që u lëshua në ajër tani në Projectile.

Së fundi, ne kemi nevojë për arka që në të vërtetë të shkatërrojnë armiqtë kur lëshohen (por jo kur armiqtë bien rastësisht në një arkë! Kjo është arsyeja pse ne i caktuam arka për të shtypur Ushqimin dhe për ta ndryshuar atë në Projektil vetëm kur lëshohen) dhe të vetë-shkatërrohen kur godasin muri Ne përdorim një tjetër të llojit Projekti mbivendoset me bllokun e armikut të tjerë të këtij lloji për këtë - në atë rast ne shkatërrojmë të dy spritat dhe rrisim rezultatin me një. Nëse predha godet murin, ne shkatërrojmë shpërthimin e tij.

Pothuajse përfundoi tani! Loja tani mund të luhet, por nuk ka ende asnjë sfidë - vetëm një nivel dhe mjaft e thjeshtë në të. Ne mund të bëjmë më shumë nivele me dorë ose të shkruajmë një algoritëm që do të gjeneronte këto nivele automatikisht për ne - edhe pse ato nuk do të jenë aq të bukura sa nivelet e krijuara nga njeriu natyrisht.

Hapi 4: Aventura të pafundme

Aventura të pafundme
Aventura të pafundme
Aventura të pafundme
Aventura të pafundme
Aventura të pafundme
Aventura të pafundme

Funksioni për gjenerimin e niveleve të rastësishme duket pak i frikshëm në fillim, por është me të vërtetë një seri e thjeshtë hapash për të gjeneruar në mënyrë algoritmike një nivel të ri, në atë mënyrë që një nivel i ri të kalohet për karakterin e luajtur. Së pari, ne kujdesemi që karakteri ynë të arrihet në atë nivel të ri - duke përdorur lojtarë të ndryshëm të mbivendosjes … në vendndodhje - ne përdorim pllakën e derës së portalit si shkas në një nivel të ri. Në funksionin generate_level fillojmë variablat rresht, kol dhe shans. Gjithashtu ne krijojmë një hartë të re të pllakave, me të njëjtën madhësi si më parë, por bosh. Këtu është një paralajmërim i vogël - në mënyrë që të përdorni setin … në rreshtin e pllakës … kolon … bllok, harta e pllakave duhet të ketë këto pllaka të veçanta --- kjo është pak intuitive kundër dhe ndoshta një defekt në kodin e kodit. Pra, ajo që do t'ju duhet të bëni është të krijoni një hartë të pllakave, të vendosni të gjitha llojet e pllakave që dëshironi të përdorni në gjenerimin e rastësishëm DHE pastaj t'i fshini ato.

Ne vendosim manualisht pllakën e parë (0x6) dhe lojtarin sipër saj. Pastaj ne përsërisim hapin tjetër 30 herë - hapi tjetër është një seri e thjeshtë e kontrolleve të vërteta -të rreme, të cilat vendosin nëse pllaka tjetër e kolonës do të jetë 1) i njëjti nivel me atë të mëparshëm 2) një lart ose 3) një poshtë. Ekziston gjithashtu një shans shumë i vogël që pllaka tjetër do të jetë një pllakë lavë - ne nuk duam shumë nga këto! Pas çdo pllake të krijuar, ne mbushim hapësirën poshtë saj me lavë - vetëm për hir të bukurisë. Si hapin e fundit ne shtojmë armiqtë dhe arka dhe i vendosim ato mbi pllakat e pjelljes së rastësishme.

Hapi 5: Fillon aventura

Fillon Aventura
Fillon Aventura

Voila! Ne përfunduam platformuesin tonë dhe heroi ynë mund të shkojë në një aventurë të pafund, duke mposhtur lakuriqët dhe duke shkatërruar arka. nëse hasni probleme, mund ta shkarkoni kodin nga depoja jonë GitHub.

Justshtë vetëm një plan dhe padyshim ka disa përmirësime që mund të bëhen, për shembull lloje të ndryshme armiqsh, shpërblime, gjenerim të nivelit më të mirë etj. Nëse bëni një version të përmirësuar të lojës, ndajeni atë në komentet më poshtë! Për më shumë informacion mbi GameGo dhe pajisje të tjera për krijuesit dhe edukatorët STEM, vizitoni faqen tonë të internetit, https://tinkergen.com/ dhe regjistrohuni në gazetën tonë.

TinkerGen ka krijuar një fushatë Kickstarter për MARK (Make A Robot Kit), një komplet robotësh për mësimin e kodimit, robotikës, AI!

Recommended: