Turinys:

Platformininkas su begaliniu „GameGo“lygiu su „Makecode Arcade“: 5 žingsniai (su nuotraukomis)
Platformininkas su begaliniu „GameGo“lygiu su „Makecode Arcade“: 5 žingsniai (su nuotraukomis)

Video: Platformininkas su begaliniu „GameGo“lygiu su „Makecode Arcade“: 5 žingsniai (su nuotraukomis)

Video: Platformininkas su begaliniu „GameGo“lygiu su „Makecode Arcade“: 5 žingsniai (su nuotraukomis)
Video: КОПАЕМ ОТ ДУШИ! ► Смотрим Shovel Knight: Treasure Trove 2024, Liepa
Anonim
Image
Image

„GameGo“yra su „Microsoft Makecode“suderinama nešiojama žaidimų konsolė, sukurta „TinkerGen STEM“švietimo. Jis pagrįstas STM32F401RET6 ARM Cortex M4 lustu ir skirtas STEM pedagogams ar tiesiog žmonėms, kuriems patinka linksmintis kuriant retro vaizdo žaidimus. Galite sekti šią pamoką ir išbandyti žaidimą „Makecode Arcade“simuliatoriuje, tada paleisti jį „GameGo“.

Šiame straipsnyje mes sukursime platformingo žaidimą su begaliniais atsitiktinai sugeneruotais lygiais. Platformoje žaidėjo valdomas personažas turi šokinėti ir lipti tarp pakabinamų platformų, vengdamas kliūčių. Aplinkoje dažnai būna nevienodo reljefo įvairaus aukščio, kurį reikia įveikti. Žaidėjas dažnai gali šiek tiek kontroliuoti šuolių aukštį ir atstumą, kad jų personažas nenukristų ir nepraleistų būtinų šuolių. Įdiegsime visus šiuos pagrindinius elementus ir taip pat pridėsime pasirinktinę funkciją, kuri sukurs naujus lygius, kai pasibaigs paskutinis. Pradėkime!

Prekės

„GameGo“

1 žingsnis: herojus

Herojus
Herojus

Pirmiausia mes sukursime savo alter ego. Mano piešimo įgūdžiai yra gana blogi, todėl aš tiesiog nusprendžiau naudoti vieną iš galerijos;) Skirtingai nuo ankstesnio mūsų sukurto žaidimo, šiame platformeryje mūsų žaidžiamas personažas gali judėti tik į kairę ir į dešinę, taip pat gali šokinėti. Taigi vietoj to, kad pagrindiniam veikėjui būtų du skirtingi spritai, šį kartą pakanka vieno - mes galime tiesiog apversti „Sprite“įvaizdį, kai keičiame kryptį.

Pirmas dalykas, kurį reikia padaryti, yra pridėti foną ir plytelių žemėlapį. Aš pasirinkau 32x8 ilgų plytelių žemėlapį - pirmajam lygiui mes nupiešime jį rankiniu būdu, kaip parodyta 2 paveikslėlyje. Tada pridedame savo žaidžiamą personažą su nustatytu mySprite į natūralaus žaidėjo bloką ir padedame jį ant 0-5 plytelės viršaus. Mes taip pat nustatėme fotoaparatą judėti žaidžiamu charakteriu ir valdyti jo kairės ir dešinės pusės judesius - mes nustatysime judėjimo greitį vy 0, nes mūsų personažas neturėtų laisvai plaukioti žemėlapyje y kryptimi. Pridėkite du mygtukus paspaudę… vieną kairiąjį, kitą dešinįjį. Kai paspaudžiamas kairysis mygtukas, prieš paspausdami mygtuką patikriname, ar mūsų kryptis buvo „palikta“. Jei taip buvo, mes tiesiog einame į kairę. Jei ne, mums reikia apversti savo veikėjo įvaizdį. Panaši teisingo judėjimo logika.

Kol kas viskas gerai, vienintelė problema atrodo, kad mūsų herojus negali įveikti jokių kliūčių. Taigi turime pridėti šokinėjimą. Mes stebėsime mygtuko aukštyn paspaudimo valdiklius ir, kai jis bus aptiktas, nustatysime kintamąjį šokinėjimą į 1, užrašysime, kiek laiko prasidėjo šokinėjimo judesiai, ir nustatysime veikėjo greitį vy iki -200 (didėja). Tada po nurodyto laiko mes nustatysime greitį iki 200 (nusileisdami), kad mūsų herojus nešautų į dangų kaip raketa.

Manau, kad dabar sukūrėme herojų, vertą iššūkio! Na, kur iššūkis?

2 žingsnis: priešai

Priešai
Priešai

Mes naudosime masyvo struktūrą priešų spritams saugoti. Kalbant apie priešus, mes pasirinksime trumpą nuorodą ir naudosime šikšnosparnius:) ne koronaviruso nuoroda, tiesiog šikšnosparniai gali skristi, todėl mums nereikės jiems „imituoti“gravitacijos, kaip tai darome su savo žaidžiamu personažu. Naudokite sukurtą priešo bloką, kad padėtumėte naujai sukurtus šikšnosparnius ant atsitiktinės neršto plytelės (pažymėtos šiek tiek baltos žymės) ir nustatykite jų vx greitį iki -10 (lėtai slenkant į dešinę). Tuomet žaidimo atnaujinime kas 2000 ms blokas kartojame kiekvieną priešo_rašto elementą ir atsitiktinai pakeičiame jų kryptį, taip pat, jei reikia, apverčiame šikšnosparnių spritus (kad atspindėtų judėjimo krypties pasikeitimą). Galiausiai pridedame prie nepageidaujamo žaidėjo persidengimo su kitu priešo bloku, kur atliekame paprastą patikrinimą, ar žaidėjas jau buvo nukentėjęs. Jei ne, mes atimame vieną gyvybę, nustatykite smūgio vėliavą į 1 (buvo pataikyta) ir paleiskite laikmatį. Praėjus 500 ms nuo paskutinio smūgio laiko, mes pakeičiame vėliavos smūgį į 0. Mes tai darome, kad žaidėjas neprarastų per daug savo brangių gyvybių po susidūrimo su priešu.

Patikrinkime, kaip mums sekasi. Na, scena tikrai atrodo gyvesnė, kai visi šikšnosparniai skraido aplink ir kandžioja mūsų žaidėją. Dabar mums reikia ginklo, kad padarytume didvyriškus darbus!

3 žingsnis: ginklas

Ginklas
Ginklas

Ginklui įkvėpimo semiausi iš seno „Nintendo“žaidimo apie du broliukai burundukai:) Pridėkime dėžės sprites prie lygio, panašiai kaip ir pridėdami priešų. Mes taip pat inicijuojame kintamąjį has_crate į -1, o tai reiškia, kad mūsų simbolis neturi dėžės. Jei žaidėjas sutampa su kitu žaidėju, kai jis sutampa su kitu maisto produktu bloku, patikriname, ar jau laikome dėžę, o jei ne, nustatome kintamąjį „has_crate“į sąrašo „Crate Sprite“indeksą. Tada žaidimo atnaujinimo bloke mes perkeliame tą spritą kartu su žaidėjo spritu ir, paspaudus mygtuką A, pakeičiame dėžės vx greitį į 1200 arba -1200 (priklausomai nuo veikėjo judėjimo krypties). Mes taip pat vėl nustatėme kintamąjį has_crate į -1 ir pakeičiame į orą tik dabar paleistos dėžės sprite tipą.

Galiausiai mums reikia, kad dėžutės iš tikrųjų sunaikintų priešus paleidus (bet ne tada, kai priešai atsitiktinai atsitrenkia į dėžę! Štai kodėl mes paskyrėme dėžėms įvesti Maisto tipą ir pakeisti jį į sviedinį tik paleidus) ir pataikyti siena. Šiam tikslui mes naudojame kitą, nes sviediniai sutampa su kitais priešo bloku - tokiu atveju mes sunaikiname abu spritus ir padidiname rezultatą vienu. Jei sviedinys atsitrenkia į sieną, mes sunaikiname jo spritą.

Beveik baigta dabar! Žaidimą galima žaisti dabar, tačiau vargu ar vis dar yra iššūkių - tik vienas lygis ir gana paprastas. Galėtume ranka padaryti daugiau lygių arba parašyti algoritmą, kuris automatiškai sukurtų šiuos lygius, nors jie, žinoma, nebus tokie gražūs kaip žmogaus sukurti lygiai.

4 žingsnis: begaliniai nuotykiai

Begaliniai nuotykiai
Begaliniai nuotykiai
Begaliniai nuotykiai
Begaliniai nuotykiai
Begaliniai nuotykiai
Begaliniai nuotykiai

Atsitiktinio lygio generavimo funkcija iš pradžių atrodo šiek tiek bauginanti, tačiau tai tikrai paprasta veiksmų seka, skirta algoritmiškai sukurti naują lygį taip, kad naujas lygis būtų priimtinas žaidžiamam personažui. Pirma, mes pasirūpiname, kad mūsų charakteris pakiltų į naują lygį - naudodamiesi nepaisant malonių žaidėjų sutapimų … vietoje - mes naudojame portalo durų plyteles kaip naujo lygio sukėlėją. Funkcijoje generator_level inicijuojame kintamuosius eilutę, colį ir atsitiktinumą. Taip pat sukuriame naują plytelių žemėlapį, tokio pat dydžio kaip ir anksčiau, bet tuščią. Tačiau čia yra nedidelis įspėjimas - kad būtų galima naudoti rinkinį… plytelių žemėlapio eilutėje… kol… blokas, plytelių žemėlapis turi turėti šias konkrečias plyteles - tai šiek tiek prieštarauja intuityviai ir galbūt „Makecode“klaida. Taigi, ką jums reikės padaryti, tai sukurti plytelių žemėlapį, sudėti visus norimus naudoti plytelių tipus atsitiktinės kartos būdu ir tada juos ištrinti.

Rankiniu būdu uždedame pirmąją plytelę (0x6) ir jos viršuje esantį grotuvą. Tada kitą veiksmą kartojame 30 kartų - kitas žingsnis yra paprastos tikros ir klaidingos patikros, kuriose sprendžiama, ar kito stulpelio plytelė bus 1) tokio paties lygio kaip ankstesnė 2) viena aukštyn ar 3) viena žemyn. Taip pat yra labai maža tikimybė, kad kita plytelė bus lavos plytelė - mes nenorime jų per daug! Po kiekvienos sukurtos plytelės užpildome po ja esančią erdvę lava - tik dėl gražumo. Paskutiniame etape pridedame priešus ir dėžes ir padedame ant atsitiktinių neršto plytelių.

5 žingsnis: nuotykių pradžia

Prasideda nuotykis
Prasideda nuotykis

Voila! Baigėme platformingą ir mūsų herojus gali leistis į begalinį nuotykį, nugalėdamas šikšnosparnius ir sunaikindamas dėžes. jei susiduriate su problemomis, galite atsisiųsti kodą iš mūsų „GitHub“saugyklos.

Tai tik planas ir tikrai galima padaryti tam tikrų patobulinimų, pavyzdžiui, įvairių rūšių priešai, premijos, geresnio lygio generavimas ir pan. Jei sukūrėte patobulintą žaidimo versiją, pasidalykite ja komentaruose žemiau! Norėdami gauti daugiau informacijos apie „GameGo“ir kitą aparatūrą, skirtą kūrėjams ir STEM pedagogams, apsilankykite mūsų svetainėje https://tinkergen.com/ ir užsiprenumeruokite mūsų naujienlaiškį.

TinkerGen sukūrė „Kickstarter“kampaniją, skirtą „MARK“(„Make A Robot Kit“) - robotų rinkinį, skirtą mokyti kodavimo, robotikos, AI!

Rekomenduojamas: