Sisukord:

Platvorm, millel on lõpmatu tase GameGo -s koos Makecode Arcade'iga: 5 sammu (piltidega)
Platvorm, millel on lõpmatu tase GameGo -s koos Makecode Arcade'iga: 5 sammu (piltidega)

Video: Platvorm, millel on lõpmatu tase GameGo -s koos Makecode Arcade'iga: 5 sammu (piltidega)

Video: Platvorm, millel on lõpmatu tase GameGo -s koos Makecode Arcade'iga: 5 sammu (piltidega)
Video: these dead multiplayer games failed... 2024, November
Anonim
Image
Image

GameGo on Microsofti Makecode'iga ühilduv kaasaskantav retro -mängukonsool, mille on välja töötanud TinkerGen STEM haridus. See põhineb STM32F401RET6 ARM Cortex M4 kiibil ja on mõeldud STEM -i koolitajatele või lihtsalt inimestele, kellele meeldib lõbutseda retro -videomängude loomisel. Saate järgida seda õpetust ja proovida mängu Makecode Arcade'i simulaatoris ning seejärel käivitada see GameGo -s.

Selles artiklis teeme platvormimängu lõpmatu juhuslikult genereeritud tasemega. Platvormmängus peab mängija juhitav tegelane hüppama ja ronima rippuvate platvormide vahele, vältides samal ajal takistusi. Keskkondades on sageli erineva kõrgusega ebaühtlane maastik, mis tuleb läbida. Mängijal on sageli mõningane kontroll hüpete kõrguse ja kauguse üle, et vältida nende tegelaskuju surnuks langemist või vajalike hüpete vahelejätmist. Rakendame kõik need põhielemendid ja lisame ka kohandatud funktsiooni, mis loob viimase taseme saavutamisel uusi tasemeid. Alustagem!

Tarvikud

GameGo

Samm: kangelane

Kangelane
Kangelane

Esimese sammuna loome oma alter-ego. Minu joonistamisoskus on üsna halb, nii et otsustasin lihtsalt galeriist ühte kasutada;) Erinevalt eelmisest mängust, mille tegime, suudab meie mängitav tegelane selles reforminguseadmes liikuda ainult vasakule ja paremale ning samuti hüpata. Nii et peategelase jaoks kahe erineva spriidi asemel seekord piisab ühest - me saame suuna muutmisel lihtsalt sprite'i pildi ümber pöörata.

Esimene asi, mida teha, on lisada taust ja plaatide kaart. Olen valinud 32x8 pikkade plaatide kaardi - esimese taseme jaoks joonistame selle käsitsi, nagu on näidatud ekraanipildil 2. Seejärel lisame oma mängitava tegelase koos seadistusega mySprite spetsiifilisele mängijaplokile ja asetame selle plaadi 0-5 kohale. Samuti seadsime kaamera liikuma mängitava iseloomuga ja kontrollime selle vasakut ja paremat liikumist - seame liikumiskiiruseks vy 0, kuna meie tegelane ei tohiks kaardil y -suunas vabalt hõljuda. Lisage kaks nupule vajutatud klahvi, üks vasakule, teine paremale. Vasakpoolset nuppu vajutades kontrollime enne nupule vajutamist, kas meie suund oli "vasakule". Kui oli, siis jätkasime lihtsalt vasakule minekut. Kui see nii ei oleks, peame oma tegelase sprite -pildi ümber pöörama. Sarnane loogika õige liikumise jaoks.

Praegu on kõik korras, ainus probleem tundub, et meie kangelane ei suuda ületada ühtegi takistust. Seega peame lisama hüppamise. Jälgime nuppude üles vajutamise juhtnuppe ja kui see tuvastatakse, seadistame muutuva hüppe väärtuseks 1, paneme tähele hüppeliigutuste algust ja määrame tegelase sprite kiiruseks vy -200 (tõus). Seejärel määrame määratud aja möödudes kiiruseks 200 (allakäik), nii et meie kangelane ei laseks raketina taevasse.

Arvan, et lõime nüüd väljakutse väärilise kangelase! Noh, kus on väljakutse?

2. samm: vaenlased

Vaenlased
Vaenlased

Vaenlaste spritide salvestamiseks kasutame massiivistruktuuri. Vaenlaste tüübi jaoks teeme väikese otsetee ja kasutame nahkhiiri:) mitte viide koroonaviirusele, lihtsalt nahkhiired võivad lennata, sellepärast ei pea me nende jaoks gravitatsiooni "simuleerima", nagu meie mängitava tegelase puhul. Kasutage loodud vaenlaseplokis, et asetada äsja loodud nahkhiired juhuslikele kudemisplaatidele (tähistatud väikese valge märgiga) ja seadistada nende vx -kiiruseks -10 (aeglaselt triivides paremale). Seejärel kordame mänguvärskenduste käigus iga 2000 ms ploki järel vaenlase_loendi iga üksuse ja muudame juhuslikult nende suunda, vajadusel pöörates ka nahkhiirte sprite (kajastamaks liikumissuuna muutumist). Lõpuks lisame hoolimata lahkest mängijast kattumise teiste vaenlase ploki vaenlasega, kus kontrollime lihtsalt, kas mängija on juba löögi saanud. Kui see pole nii, siis lahutame ühe elu, määrame tabamuse lipuks 1 (on tabanud) ja käivitame taimeri. Kui 500 ms on möödunud viimase tabamuse ajast, muudame lipu tabamuse tagasi 0. Me teeme seda selleks, et mängija ei saaks pärast vaenlasega kokkupõrget liiga palju oma väärtuslikku elu kaotada.

Kontrollime, kuidas meil läheb. Noh, stseen tundub kindlasti elavam, kui kõik nahkhiired lendavad ringi ja hammustavad meie mängijat. Nüüd vajame oma kangelastegude tegemiseks relva!

3. samm: relv

Relv
Relv

Relva jaoks ammutasin inspiratsiooni ühest vanast Nintendo mängust kahe mardikas venna kohta:) Lisame taseme kasti spritid, sarnaselt vaenlaste lisamisega. Samuti lähtestame muutuja has_crate väärtuseks -1, mis näitab, et meie tegelaskuju ei sisalda kasti. Lahketest vaatamata mängija kattub mõne muu toidulauaga, kontrollime, kas meil on juba aedik ja kui mitte, siis määrame muutuja has_crate loendis oleva kasti sprite indeksi. Seejärel liigutame mängu värskendusplokis selle spriti koos mängija sprite'iga ja kui vajutate nuppu A, muudame kasti vx kiiruseks 1200 või -1200 (sõltuvalt tegelase liikumissuunast). Samuti seadsime muutuja has_crate uuesti väärtusele -1 ja muudame äsja õhku lastud aediku sprite tüübi projektoriks.

Lõpuks on vaja, et kastid hävitaksid tõepoolest vaenlased nende käivitamisel (kuid mitte siis, kui vaenlased lihtsalt juhuslikult kasti satuvad! Sellepärast määrasime kastid toidu tüübiks ja muutsime selle mürsuks alles käivitamisel) ja löömisel ennast hävitama. seina. Me kasutame selleks teist tüüpi, kui mürsud kattuvad teiste vaenlaseplokkidega - sel juhul hävitame mõlemad spritid ja tõstame punkte ükshaaval. Kui mürsk lööb seina, hävitame selle sprite.

Nüüd peaaegu valmis! Mängu saab praegu mängida, kuid vaevalt on see endiselt väljakutse - ainult ühel tasemel ja üsna lihtne. Võiksime käsitsi teha rohkem tasemeid või kirjutada algoritmi, mis need tasemed meie jaoks automaatselt genereeriks - kuigi need ei ole muidugi nii ilusad kui inimese loodud tasemed.

4. samm: lõputud seiklused

Lõputud seiklused
Lõputud seiklused
Lõputud seiklused
Lõputud seiklused
Lõputud seiklused
Lõputud seiklused

Juhusliku taseme genereerimise funktsioon tundub esialgu natuke hirmutav, kuid see on tõesti lihtne sammude jada uue taseme algoritmiliseks genereerimiseks, nii et uus tase on mängitava tegelase jaoks vastuvõetav. Esiteks hoolitseme selle eest, et saaksime oma iseloomu sellele uuele tasemele viia - kasutades lahkeid mängija kattuvusi… asukohas - kasutame portaaliukseplaati uuele tasemele. Funktsioonis generaatoritase lähtestame muutujate rea, veeru ja juhuse. Samuti loome uue plaadikaardi, mis on sama suur kui varem, kuid tühi. Siin on siiski väike hoiatus - selleks, et kasutada set… at tilemap row … col … block, peab tilemapil olema need konkreetsed plaadid --- see on natuke intuitiivne ja võib -olla Makecode'i viga. Niisiis, mida peate tegema, on luua paanikaart, panna juhuslikult genereerima kõik plaaditüübid, mida soovite kasutada, ja seejärel need kustutada.

Panime käsitsi esimese plaadi (0x6) ja mängija selle peale. Seejärel kordame järgmist sammu 30 korda - järgmine samm on lihtsad tõese -vale kontrollide seeriad, mis otsustavad, kas järgmine veeruplaat on meil 1) samal tasemel kui eelmine 2) üks üles või 3) üks allapoole. Samuti on väga väike võimalus, et järgmine plaat on laavaplaat - me ei taha neid liiga palju! Pärast iga loodud plaati täidame selle all oleva ruumi laavaga - lihtsalt ilususe huvides. Viimase sammuna lisame vaenlased ja kastid ning asetame need juhuslike kudemisplaatide peale.

Samm: seiklus algab

Seiklus algab
Seiklus algab

Voila! Lõpetasime oma reforminguseadme ja meie kangelane võib minna lõpmatusse seiklusse, võites nahkhiired ja hävitades kastid. kui teil on probleeme, saate koodi alla laadida meie GitHubi hoidlast.

See on lihtsalt plaan ja kindlasti saab teha mõningaid täiustusi, näiteks erinevad vaenlased, boonused, parema taseme loomine ja nii edasi. Kui teete mängust täiustatud versiooni, jagage seda allolevates kommentaarides! Lisateavet GameGo ja muu riistvara kohta tegijatele ja STEM -i koolitajatele leiate meie veebisaidilt https://tinkergen.com/ ja tellige meie uudiskiri.

TinkerGen on loonud Kickstarteri kampaania MARK (Make A Robot Kit) jaoks, robotikomplekt kodeerimise, robootika ja tehisintellekti õpetamiseks!

Soovitan: