INHOUDSOPGAWE:

Platformer met oneindige vlakke op GameGo met Makecode Arcade: 5 stappe (met foto's)
Platformer met oneindige vlakke op GameGo met Makecode Arcade: 5 stappe (met foto's)

Video: Platformer met oneindige vlakke op GameGo met Makecode Arcade: 5 stappe (met foto's)

Video: Platformer met oneindige vlakke op GameGo met Makecode Arcade: 5 stappe (met foto's)
Video: Теория пылающего пердака, хроники боли #3 Прохождение Cuphead 2024, November
Anonim
Image
Image

GameGo is 'n Microsoft Makecode -versoenbare retro -draagbare konsole wat ontwikkel is deur TinkerGen STEM education. Dit is gebaseer op die STM32F401RET6 ARM Cortex M4 -chip en is gemaak vir STEM -opvoeders of net mense wat daarvan hou om retro -videospeletjies te skep. Jy kan hierdie tutoriaal volg en die spel in Makecode Arcade -simulator probeer en dit dan op GameGo laat loop.

In hierdie artikel gaan ons 'n platformspeletjie maak met oneindige willekeurig gegenereerde vlakke. In 'n platformspeler moet die spelerbeheerde karakter tussen hangende platforms spring en klim terwyl hindernisse vermy word. Omgewings bevat dikwels ongelyke terreine van verskillende hoogte wat deurkruis moet word. Die speler het dikwels 'n mate van beheer oor die hoogte en afstand van spronge om te verhoed dat hulle karakter doodgaan of die nodige spronge misloop. Ons implementeer al hierdie basiese elemente en voeg ook 'n pasgemaakte funksie by wat nuwe vlakke sal genereer aan die einde van die laaste een. Laat ons begin!

Voorrade

GameGo

Stap 1: Die held

Die held
Die held

As 'n eerste stap sal ons ons alter-ego skep. My tekenvaardighede is redelik sleg, so ek het net besluit om een uit die galery te gebruik;) Anders as die vorige speletjie wat ons gemaak het, kan ons speelbare karakter in hierdie platform net na links en regs beweeg, en dit kan ook spring. Dus, in plaas van om twee verskillende sprites vir die hoofkarakter te hê, is een hierdie keer genoeg - ons kan net die beeld van Sprite verander as ons van rigting verander.

Die eerste ding om te doen is om agtergrond en teëlkaart by te voeg. Ek het 'n 32 x 8 lang teëlkaart gekies - vir die eerste vlak teken ons dit met die hand, soos in skermkiekie 2. Dan voeg ons ons speelbare karakter by met mySprite tot 'n sprite of kind spelerblok en plaas dit bo -op die teël 0-5. Ons stel ook die kamera in om met 'n speelbare karakter te beweeg en beheer die linker- en regterbeweging daarvan - ons stel die bewegingssnelheid op 0, aangesien ons karakter nie vrylik op die kaart in y -rigting kan dryf nie. Voeg twee blokke op … knoppies ingedruk, een vir linkerknoppie, een vir regs. As die linkerknoppie ingedruk word, kyk ons of ons rigting 'links' was voordat ons op die knoppie druk. As dit was, gaan ons net links. As dit nie die geval is nie, moet ons die karakter van ons karakter verander. Soortgelyke logika vir regte beweging.

Alles goed vir nou, die enigste probleem lyk asof ons held geen hindernis kan oorkom nie. Ons moet dus spring byvoeg. Ons sal die knoppies monitor vir die druk op die knoppie, en as dit opgespoor word, stel ons veranderlike spring in op 1, neem kennis van die tyd wat die bewegings begin het en stel die sprite snelheid van die karakter op -200 (omhoog). Na 'n bepaalde tydperk stel ons die snelheid op 200 (daal), sodat ons held nie as 'n vuurpyl na die hemel sou skiet nie.

Ek dink ons het nou 'n held geskep wat die uitdaging werd is! Wel, waar is die uitdaging?

Stap 2: Die vyande

Die vyande
Die vyande

Ons sal 'n skikkingstruktuur gebruik om die vyande van die vyande op te slaan. Vir tipe vyande neem ons 'n kortpad en gebruik vlermuise:) nie 'n verwysing na koronavirus nie; dit is net vlermuise wat kan vlieg, daarom hoef ons nie die swaartekrag vir hulle te "simuleer", net soos met ons speelbare karakter. Gebruik dit op 'n geskepte vyandblok om nuutgeskepte vlermuise op 'n lukrake teël te plaas (gemerk met 'n klein wit merkie) en stel hul vx -snelheid op -10 (dryf stadig regs). Dan word ons elke 2000 ms -blok deur die opdatering van die spel herhaal deur elke item van die vyandelike_lys en verander hulle lukraak, terwyl ons ook die sprites van die vlermuise omdraai indien nodig (om die verandering in bewegingsrigting te weerspieël). Uiteindelik voeg ons by 'n ander soort speler -oorvleueling met die ander vyande -blok, waar ons eenvoudig kan kyk of die speler al raakgery is. As dit nie was nie, trek ons een lewe af, stel die treffervlag op 1 (is getref) en begin die timer. Sodra 500 ms sedert die laaste treffertyd verstryk het, verander ons die vlag terug na 0. Ons doen dit om te voorkom dat die speler te veel van sy kosbare lewens verloor nadat hy met 'n vyand gebots het.

Kom ons kyk hoe dit met ons gaan. Die toneel lyk beslis lewendiger met al die vlermuise wat rondvlieg en ons speler byt. Nou het ons 'n wapen nodig om ons heldedade te doen!

Stap 3: Die wapen

Die wapen
Die wapen

Vir die wapen haal ek die inspirasie uit 'n ou Nintendo -speletjie oor twee chipmunk -broers. Ons initialiseer ook die has_crate -veranderlike na -1, wat aandui dat ons karakter nie 'n krat het nie. In on -sprite of kind Player oorvleuel met otherSprite of kind Food -blok, kyk of ons reeds 'n krat hou en as ons dit nie het nie, stel ons die has_crate -veranderlike op die indeks van die kratsprite in die lys. Dan, in die spelopdateringsblok, skuif ons die sprite saam met die speler se sprite en as knoppie A ingedruk word, verander ons die vx -snelheid van die krat na 1200 of -1200 (afhangende van die bewegingsrigting van die karakter). Ons stel ook die veranderlike has_crate terug na -1 en verander die tipe sprite van die krat wat nou in die lug gelanseer is na Projectile.

Laastens het ons nodig dat die kratte die vyande eintlik vernietig wanneer hulle gelanseer word (maar nie as die vyande lukraak oor 'n krat struikel nie! Daarom het ons kratte opgedra om voedsel te tik en dit slegs na projektiel te verander wanneer hulle gelanseer word) en selfvernietig wanneer hulle slaan die muur. Ons gebruik daarvoor 'n ander on -sprite of kind Projektieloorvleuelings met die ander vyandelike blok - in daardie geval vernietig ons beide sprites en verhoog ons telling met een. As die projektiel teen die muur raak, vernietig ons die sprite daarvan.

Nou amper klaar! Die spel is nou speelbaar, maar nog steeds geen uitdaging nie - slegs een vlak en redelik eenvoudig. Ons kan meer vlakke met die hand maak of 'n algoritme skryf wat hierdie vlakke outomaties vir ons sou genereer - hoewel dit natuurlik nie so mooi sal wees as deur mensgemaakte vlakke nie.

Stap 4: Oneindige avonture

Oneindige avonture
Oneindige avonture
Oneindige avonture
Oneindige avonture
Oneindige avonture
Oneindige avonture

Die funksie vir ewekansige vlakopwekking lyk aanvanklik 'n bietjie eng, maar dit is eintlik 'n eenvoudige reeks stappe om 'n nuwe vlak algoritmies te genereer, op die manier dat 'n nuwe vlak vir speelbare karakter aanvaarbaar is. Eerstens sorg ons dat ons karakter na die nuwe vlak kom - deur gebruik te maak van 'n oorvloedige speler -oorvleueling … op die plek - gebruik ons portaaldeurteëls as 'n sneller na 'n nuwe vlak. In die generate_level -funksie initialiseer ons veranderlikes ry, kol en kans. Ons skep ook 'n nuwe teëlkaart, dieselfde grootte as voorheen, maar leeg. Hier is egter 'n bietjie voorbehoud - om die stel … in die teemap -ry … col … -blok te gebruik, moet die tilemap hierdie spesifieke teëls hê - dit is 'n bietjie teen -intuïtief en miskien 'n fout in Makecode. Wat u dus moet doen, is om 'n teëlkaart te skep, al die teëls wat u wil gebruik, in willekeurige generasie te plaas en dit dan uit te vee.

Ons sit die eerste teël (0x6) en die speler met die hand daarop. Dan herhaal ons die volgende stap 30 keer - die volgende stap is 'n eenvoudige reeks waar -onwaar tjeks wat bepaal of die volgende kolom 1) dieselfde vlak as vorige 2) een op of 3) een afwaarts sal wees. Daar is ook 'n baie klein kans dat die volgende teël 'n lawa teël gaan wees - ons wil nie te veel hiervan hê nie! Na elke teël wat gegenereer word, vul ons die ruimte daaronder met lawa - net ter wille van die mooierheid. As 'n laaste stap voeg ons die vyande en die kratte by en plaas dit bo -op willekeurige kuitteëls.

Stap 5: Avontuur begin

Avontuur begin
Avontuur begin

Voila! Ons is klaar met ons platform en ons held kan op 'n oneindige avontuur gaan, vlermuise verslaan en kratte vernietig. as u probleme ondervind, kan u die kode aflaai van ons GitHub -bewaarplek.

Dit is slegs 'n bloudruk en daar is beslis 'n paar verbeterings wat aangebring kan word, byvoorbeeld verskillende soorte vyande, bonusse, beter vlakgenerasie, ensovoorts. As u 'n verbeterde weergawe van die spel maak, deel dit dan in die kommentaar hieronder! Vir meer inligting oor GameGo en ander hardeware vir vervaardigers en STEM -opvoeders, besoek ons webwerf, https://tinkergen.com/ en teken in op ons nuusbrief.

TinkerGen het 'n Kickstarter -veldtog vir MARK (Make A Robot Kit), 'n robotstel vir die onderrig van kodering, robotika, AI!

Aanbeveel: