Sisällysluettelo:

Hyppely, jossa on äärettömät tasot GameGossa Makecode Arcadella: 5 vaihetta (kuvilla)
Hyppely, jossa on äärettömät tasot GameGossa Makecode Arcadella: 5 vaihetta (kuvilla)

Video: Hyppely, jossa on äärettömät tasot GameGossa Makecode Arcadella: 5 vaihetta (kuvilla)

Video: Hyppely, jossa on äärettömät tasot GameGossa Makecode Arcadella: 5 vaihetta (kuvilla)
Video: Ryhmätunnit alle kouluikäisille 2024, Marraskuu
Anonim
Image
Image

GameGo on Microsoft Makecode -yhteensopiva kannettava retro -pelikonsoli, jonka on kehittänyt TinkerGen STEM -opetus. Se perustuu STM32F401RET6 ARM Cortex M4 -siruun ja on suunniteltu STEM -opettajille tai vain ihmisille, jotka haluavat pitää hauskaa retro -videopelien luomisessa. Voit seurata tätä opetusohjelmaa ja kokeilla peliä Makecode Arcade -simulaattorissa ja käyttää sitä GameGolla.

Tässä artikkelissa aiomme tehdä tasohyppelypelin, jossa on ääretön satunnaisesti luotu taso. Tasohyppelyssä pelaajan ohjaaman hahmon täytyy hypätä ja kiivetä ripustettujen alustojen väliin välttäen esteitä. Ympäristöissä on usein epätasaista, vaihtelevan korkeuden maastoa, joka on ajettava. Pelaaja voi usein hallita hyppyjen korkeutta ja etäisyyttä välttääkseen hahmon putoamisen kuolemaansa tai jättämättä tarvittavat hyppyjä. Toteutamme kaikki nämä peruselementit ja lisäämme myös mukautetun toiminnon, joka luo uusia tasoja, kun saavutamme viimeisen. Aloitetaanpa!

Tarvikkeet

GameGo

Vaihe 1: Sankari

Sankari
Sankari

Ensimmäisenä askeleena luomme alter-egomme. Piirtotaitoni ovat melko huonot, joten päätin käyttää sitä galleriasta;) Toisin kuin edellinen tekemämme peli, tässä tasohyppelyssä pelattava hahmomme voi liikkua vain vasemmalle ja oikealle ja myös hypätä. Joten sen sijaan, että päähenkilöllä olisi kaksi erilaista spriteä, yksi riittää tällä kertaa - voimme vain kääntää spriten kuvan, kun muutamme suuntaa.

Ensimmäinen asia on lisätä tausta ja laattakartta. Olen valinnut 32x8 pitkän laattakartan - ensimmäiselle tasolle piirrämme sen manuaalisesti, kuten kuvakaappauksessa 2. Sitten lisäämme pelattavan hahmomme asetuksella mySprite sprite of kind Player -lohkoon ja asetamme sen laatan 0-5 päälle. Asetimme myös kameran liikkumaan pelattavalla luonteella ja hallitsemme sen vasenta ja oikeaa liikettä - asetamme liikkeen nopeudeksi vy 0, koska hahmomme ei pitäisi pystyä kellumaan vapaasti kartalla y -suuntaa pitkin. Lisää kaksi… -painiketta painettua lohkoa, yksi vasenta painiketta ja yksi oikeaa. Kun vasenta painiketta painetaan, tarkistamme, onko suunta "vasen", ennen kuin painamme painiketta. Jos oli, jatkamme vain vasemmalle. Jos ei, meidän on käännettävä hahmomme sprite -kuva. Samanlainen logiikka oikealle liikkeelle.

Kaikki hyvä nyt, ainoa ongelma näyttää siltä, että sankarimme ei näytä voittavan mitään esteitä. Joten meidän on lisättävä hyppy. Seuraamme säätimiä ylöspainikkeiden painamiseksi ja kun se havaitaan, asetamme muuttuvan hyppyn 1: ksi, muistamme hyppyliikkeiden alkamisajan ja asetamme hahmon sprite -nopeuden vy arvoon -200 (nouseva). Sitten määritetyn ajan kuluttua asetamme nopeudeksi 200 (laskeminen), jotta sankarimme ei ammuisi taivaalle rakettina.

Luulen, että loimme haasteen arvoisen sankarin nyt! No, missä on haaste?

Vaihe 2: Viholliset

Viholliset
Viholliset

Käytämme taulukkorakennetta vihollisten spriteiden tallentamiseen. Vihollistyypeille otamme pienen pikakuvakkeen ja käytämme lepakkoja:) ei koronavirusviittausta, vain lepakot voivat lentää, siksi meidän ei tarvitse "simuloida" painovoimaa heille, kuten teemme pelattavan hahmomme kanssa. Käytä luodussa vihollislohkossa, kun haluat sijoittaa uudet lepakot satunnaiselle kutulaatalle (merkitty pienellä valkoisella merkillä) ja asettaa niiden vx -nopeudeksi -10 (hitaasti ajelehtimassa oikealle). Sitten pelipäivityksessä joka 2000 ms: n lohko toistamme jokaisen vihollinen_listan kohteen ja muutamme satunnaisesti niiden suuntaa ja käännämme tarvittaessa myös lepakoiden sprittejä (heijastamaan liikesuunnan muutosta). Lopuksi lisäämme sprite of kind -pelaajan päällekkäisyyksiä muiden luonteenomaisten vihollislohkojen kanssa, jossa tarkistamme yksinkertaisesti, onko pelaaja jo osunut. Jos ei, me vähennämme yhden elämän, aseta osumalippu arvoon 1 (on osuma) ja käynnistä ajastin. Kun 500 ms viimeisestä osuma -ajasta on kulunut, vaihdamme lipun osuman takaisin arvoon 0. Teemme tämän, jotta pelaaja välttää menettämästä liikaa arvokasta elämäänsä törmättyään viholliseen.

Tarkistetaan, miten meillä menee. Kohtaus näyttää varmasti vilkkaammalta, kun kaikki lepakot lentävät ympäri ja purevat pelaajaamme. Nyt tarvitsemme aseen sankarillisten tekojemme tekemiseen!

Vaihe 3: Ase

Ase
Ase

Aseesta ammennin inspiraatiota vanhasta Nintendo -pelistä kahdesta maaorava veljestä:) Lisätään laatikko spritejä tasolle, samalla tavalla kuin viholliset. Alustamme myös has_crate -muuttujan arvoon -1, mikä osoittaa, että hahmossamme ei ole laatikkoa. Jos pelaaja on päällekkäin muiden pelaajien kanssa muiden elintarvikkeiden kanssa, tarkistamme, onko meillä jo laatikko, ja jos emme, asetamme has_crate -muuttujan luettelon laatikon sprite -indeksi. Sitten pelin päivityslohkossa siirrämme tämän spritin yhdessä pelaajan spriten kanssa ja jos painiketta A painetaan, muutamme laatikon vx -nopeudeksi 1200 tai -1200 (hahmon liikesuunnasta riippuen). Asetimme has_crate -muuttujan takaisin arvoon -1 uudelleen ja muutimme juuri nyt ilmaan laukaistun laatikon sprite -tyypiksi Projectile.

Lopuksi tarvitsemme, että laatikot todella tuhoavat viholliset, kun ne laukaistaan (mutta ei silloin, kun viholliset kompastuvat satunnaisesti laatikon yli! Siksi annoimme laatikot kirjoittamaan ruokaa ja muuttamaan sen ammukseksi vain käynnistettäessä) ja tuhoamaan itsensä osuessasi seinä. Käytämme toista, kun kyseessä ovat sellaiset ammukset, jotka ovat päällekkäisiä muiden luottamuksellisten vihollislohkojen kanssa - siinä tapauksessa tuhoamme molemmat spriteit ja nostamme pisteitä yksi kerrallaan. Jos ammukset osuvat seinään, tuhoamme sen sprite.

Melkein valmis nyt! Peli on pelattavissa nyt, mutta tuskin mitään haastetta vielä - vain yksi taso ja melko yksinkertainen siinä. Voisimme tehdä enemmän tasoja käsin tai kirjoittaa algoritmin, joka luo nämä tasot automaattisesti meille - vaikka ne eivät tietenkään ole yhtä kauniita kuin ihmisen luomat tasot.

Vaihe 4: Infinite Adventures

Ääretön seikkailu
Ääretön seikkailu
Ääretön seikkailu
Ääretön seikkailu
Ääretön seikkailu
Ääretön seikkailu

Satunnaistason luomisen toiminto näyttää aluksi hieman pelottavalta, mutta se on oikeastaan yksinkertainen vaiheiden sarja uuden tason luomiseksi algoritmisesti tavalla, jolla uusi taso on pelattavalle hahmolle kelvollinen. Ensinnäkin huolehdimme siitä, että saamme hahmomme uudelle tasolle - käyttämällä ystävällisiä pelaajien päällekkäisyyksiä… sijainnissa - käytämme portaalin oven laattaa laukaisijana uudelle tasolle. Generate_level -funktiossa alustamme muuttujien rivin, colin ja sattuman. Luomme myös uuden laattakartan, joka on saman kokoinen kuin ennen, mutta tyhjä. Tässä on kuitenkin pieni varoitus - jotta voidaan käyttää set… at tilemap row… col… block, tilemap: n on sisällettävä nämä tietyt laatat --- se on hieman intuitiivista ja ehkä virhe Makecodessa. Sinun on siis luotava laattakartta, asetettava kaikki haluamasi laatatyypit satunnaiseen luomiseen JA poistettava ne.

Asetamme manuaalisesti ensimmäisen laatan (0x6) ja pelaajan sen päälle. Toistamme sitten seuraavan vaiheen 30 kertaa - seuraava vaihe on yksinkertainen True -False -tarkistussarja, joka päättää, onko seuraavan sarakkeen laatta 1) sama kuin edellinen 2) yksi ylöspäin tai 3) yksi alaspäin. On myös hyvin pieni mahdollisuus, että seuraava laatta on laavalaatta - emme halua liikaa näitä! Jokaisen laatan jälkeen täytämme sen alapuolella olevan tilan laavalla - vain kauneuden vuoksi. Viimeisenä vaiheena lisäämme viholliset ja laatikot ja asetamme ne satunnaisten kutevien laattojen päälle.

Vaihe 5: Seikkailu alkaa

Seikkailu alkaa
Seikkailu alkaa

Voila! Lopetimme tasohyppelymme ja sankarimme voi mennä äärettömään seikkailuun, voittaa lepakot ja tuhota laatikot. Jos kohtaat ongelmia, voit ladata koodin GitHub -arkistostamme.

Se on vain suunnitelma, ja parannuksia voidaan ehdottomasti tehdä, esimerkiksi erilaisia vihollisia, bonuksia, parempaa tason luomista ja niin edelleen. Jos teet parannetun version pelistä, jaa se alla oleviin kommentteihin! Lisätietoja GameGosta ja muista laitteista valmistajille ja STEM -opettajille käy verkkosivustollamme https://tinkergen.com/ ja tilaa uutiskirjeemme.

TinkerGen on luonut Kickstarter -kampanjan MARKille (Make A Robot Kit), joka on robottipaketti koodauksen, robotiikan ja tekoälyn opettamiseen!

Suositeltava: