Satura rādītājs:

Platformētājs ar bezgalīgiem līmeņiem GameGo ar Makecode Arcade: 5 soļi (ar attēliem)
Platformētājs ar bezgalīgiem līmeņiem GameGo ar Makecode Arcade: 5 soļi (ar attēliem)

Video: Platformētājs ar bezgalīgiem līmeņiem GameGo ar Makecode Arcade: 5 soļi (ar attēliem)

Video: Platformētājs ar bezgalīgiem līmeņiem GameGo ar Makecode Arcade: 5 soļi (ar attēliem)
Video: Секрет опытных мастеров! Как легко состыковать материал, если в углу стоит круглая труба? #shorts 2024, Novembris
Anonim
Image
Image

GameGo ir ar Microsoft Makecode saderīga pārnēsājama spēļu konsole, ko izstrādājusi TinkerGen STEM izglītība. Tas ir balstīts uz STM32F401RET6 ARM Cortex M4 mikroshēmu un paredzēts STEM pedagogiem vai vienkārši cilvēkiem, kuriem patīk izklaidēties, veidojot retro videospēles. Jūs varat sekot šai apmācībai un izmēģināt spēli Makecode Arcade simulatorā un pēc tam palaist to vietnē GameGo.

Šajā rakstā mēs izveidosim platformas spēli ar bezgalīgiem nejauši ģenerētiem līmeņiem. Platformā spēlētāja kontrolētajam varonim ir jālec un jākāpj starp piekārtām platformām, vienlaikus izvairoties no šķēršļiem. Apkārtnē bieži ir nevienmērīgs, dažāda augstuma reljefs, kas jāpārvar. Spēlētājam bieži ir zināma kontrole pār lēcienu augstumu un attālumu, lai neļautu personāžam nokrist līdz nāvei vai palaistu garām nepieciešamos lēcienus. Mēs ieviesīsim visus šos pamatelementus, kā arī pievienosim pielāgotu funkciju, kas radīs jaunus līmeņus, sasniedzot pēdējā posma beigas. Sāksim!

Piegādes

GameGo

1. solis: varonis

Varonis
Varonis

Vispirms mēs izveidosim savu alter ego. Manas zīmēšanas prasmes ir diezgan sliktas, tāpēc es vienkārši nolēmu izmantot vienu no galerijas;) Atšķirībā no iepriekšējās spēles, kuru mēs veidojām, šajā platformas platformā mūsu spēlējamais varonis var kustēties tikai pa kreisi un pa labi, kā arī var lēkt. Tātad, tā vietā, lai galvenajam varonim būtu divi dažādi spriti, šoreiz pietiek ar vienu - mēs varam vienkārši apvērst Sprites tēlu, mainot virzienu.

Pirmā lieta, kas jādara, ir pievienot fonu un flīžu karti. Esmu izvēlējies 32x8 garu flīžu karti - pirmajam līmenim mēs to uzzīmēsim manuāli, kā parādīts 2. ekrānuzņēmumā.. Mēs arī iestatījām kameru kustēties ar spēlējamu raksturu un kontrolēt tās kreiso un labo kustību - mēs iestatīsim kustības ātrumu vy uz 0, jo mūsu personāžam nevajadzētu brīvi peldēt kartē pa y virzienu. Pievienojiet divus pogas… nospiestus blokus, vienu kreisajai pogai, otru pa labi. Nospiežot kreiso pogu, pirms pogas nospiešanas mēs pārbaudām, vai mūsu virziens ir “pa kreisi”. Ja tā bija, mēs turpinām iet pa kreisi. Ja tā nebūtu, mums jāpārvērš sava varoņa sprite. Līdzīga loģika pareizai kustībai.

Pagaidām viss ir kārtībā, šķiet, ka vienīgā problēma ir tā, ka mūsu varonis, šķiet, nevar pārvarēt nevienu šķērsli. Tāpēc mums jāpievieno lēkšana. Mēs uzraudzīsim vadības taustiņus, lai nospiestu pogu uz augšu, un, kad tas tiks atklāts, mēs iestatīsim mainīgo lēcienu uz 1, atzīmēsim lecamo kustību laiku un iestatīsim varoņa sprita ātrumu vy līdz -200 (pieaugums). Tad pēc noteikta laika mēs iestatīsim ātrumu līdz 200 (lejup), lai mūsu varonis nešautu debesīs kā raķete.

Es domāju, ka mēs tagad izveidojām izaicinājuma cienīgu varoni! Nu, kur ir izaicinājums?

2. solis: ienaidnieki

Ienaidnieki
Ienaidnieki

Mēs izmantosim masīvu struktūru, lai uzglabātu ienaidnieku spritus. Attiecībā uz ienaidnieku veidiem mēs izmantosim nelielu saīsni un izmantosim sikspārņus:) nevis atsauci uz koronavīrusu, tikai sikspārņi var lidot, tāpēc mums nevajadzēs viņiem "simulēt" gravitāciju, kā tas ir ar mūsu spēlējamo raksturu. Izmantojiet izveidotajā ienaidnieka blokā, lai novietotu jaunizveidotos sikspārņus uz nejaušas nārsta flīzes (atzīmēti ar nelielu baltu atzīmi) un iestatītu to vx ātrumu līdz -10 (lēnām dreifējoši pa labi). Tad spēles atjaunināšanas laikā ik pēc 2000 ms bloka mēs atkārtojam katru ienaidnieka saraksta vienumu un nejauši mainām to virzienu, vajadzības gadījumā arī apgriežot sikspārņu spritus (lai atspoguļotu kustības virziena izmaiņas). Visbeidzot, mēs papildinām spēlētāja pārklāšanos ar citu ienaidnieka bloku, kurā veicam vienkāršu pārbaudi, vai spēlētājs jau ir ticis. Ja tā nebūtu, mēs atskaitītu vienu dzīvību, iestatiet trāpījuma karodziņu uz 1 (ir trāpīts) un iedarbiniet taimeri. Kad ir pagājuši 500 ms kopš pēdējā trāpījuma laika, mēs mainām karoga trāpījumu uz 0. Mēs to darām, lai spēlētājs pēc sadursmes ar ienaidnieku izvairītos no pārāk dārgas dzīvības zaudēšanas.

Pārbaudīsim, kā mums iet. Aina noteikti šķiet dzīvāka, jo visi sikspārņi lido apkārt un kož mūsu spēlētājam. Tagad mums ir nepieciešams ierocis, lai veiktu savus varoņdarbus!

3. solis: ierocis

Ieroči
Ieroči

Ieročam es smēlos iedvesmu no vecas Nintendo spēles par diviem burunduku brāļiem:) Pievienosim kastes spritus līdz līmenim, līdzīgi kā mēs darām, pievienojot ienaidniekus. Mēs arī inicializējam mainīgo has_crate uz -1, kas norāda, ka mūsu raksturā nav kastes. Spēlētāja pārklāšanās gadījumā ar citu pārtikas produktu bloku, mēs pārbaudām, vai mums jau ir kaste, un, ja nē, mēs iestatām mainīgo has_crate uz kastes sprite indeksu sarakstā. Tad spēles atjaunināšanas blokā mēs pārvietojam šo spritu kopā ar spēlētāja spritu, un, nospiežot pogu A, mēs mainām kastes vx ātrumu uz 1200 vai -1200 (atkarībā no varoņa kustības virziena). Mēs arī atkal iestatījām mainīgo has_crate uz -1 un mainām gaisā tikko palaistās kastes sprite veidu uz Projectile.

Visbeidzot, mums ir nepieciešams, lai kastes patiesībā iznīcinātu ienaidniekus, kad tās tika palaistas (bet ne tad, kad ienaidnieki vienkārši nejauši uzķeras kastē! Tieši tāpēc mēs piešķīrām kastēm rakstīt pārtiku un mainīt to uz lādiņu tikai palaišanas laikā) un pašiznīcināt, kad trāpa siena. Šim nolūkam mēs izmantojam citu, ja šāviņš pārklājas ar citu ienaidnieka bloku - tādā gadījumā mēs iznīcinām abus spritus un paaugstinām punktu skaitu. Ja šāviņš ietriecas sienā, mēs iznīcinām tā spritu.

Tagad gandrīz pabeigts! Spēli tagad var spēlēt, taču diez vai joprojām ir izaicinājums - tikai vienā līmenī un diezgan vienkāršs. Mēs varētu ar rokām izveidot vairāk līmeņu vai uzrakstīt algoritmu, kas mums automātiski ģenerētu šos līmeņus, lai gan tie, protams, nebūs tik skaisti kā cilvēku radīti līmeņi.

4. solis: bezgalīgi piedzīvojumi

Bezgalīgi piedzīvojumi
Bezgalīgi piedzīvojumi
Bezgalīgi piedzīvojumi
Bezgalīgi piedzīvojumi
Bezgalīgi piedzīvojumi
Bezgalīgi piedzīvojumi

Funkcija nejauša līmeņa ģenerēšanai sākotnēji izskatās mazliet biedējoša, taču tā patiešām ir vienkārša darbību virkne, lai algoritmiski ģenerētu jaunu līmeni tādā veidā, ka atskaņojamam personāžam ir pieņemams jauns līmenis. Pirmkārt, mēs rūpējamies par to, lai mūsu raksturs sasniegtu šo jauno līmeni - izmantojot nejaušu spēlētāju pārklāšanos … atrašanās vietā - mēs izmantojam portāla durvju dakstiņus, lai aktivizētu jaunu līmeni. Funkcijā generator_level mēs inicializējam mainīgo rindu, kolu un iespēju. Mēs arī izveidojam jaunu flīžu karti, tāda paša izmēra kā iepriekš, bet tukšu. Tomēr šeit ir neliels brīdinājums - lai izmantotu komplektu… pie tilemap rindas… col… bloka, tilemap ir jābūt šīm konkrētajām flīzēm - tas ir mazliet intuitīvs un varbūt kļūda Makecode. Tātad, jums ir jāizveido flīžu karte, jāizvieto nejaušā ģenerēšanā visi izmantojamie flīžu veidi UN pēc tam tās jāizdzēš.

Mēs manuāli uzliekam pirmo flīzi (0x6) un spēlētāju virs tās. Tad mēs atkārtojam nākamo soli 30 reizes - nākamais solis ir vienkāršas patiesu -nepatiesu pārbaužu sērijas, kurās tiek izlemts, vai nākamā kolonnas flīze būs 1) tādā pašā līmenī kā iepriekšējā 2) viena augšup vai 3) viena lejup. Pastāv arī ļoti maza iespēja, ka nākamā flīze būs lavas flīze - mēs nevēlamies pārāk daudz no tām! Pēc katras izveidotās flīzes mēs aizpildām vietu zem tās ar lavu - tikai skaistuma dēļ. Pēdējā posmā mēs pievienojam ienaidniekus un kastes un novietojam tās virs nejaušām nārsta flīzēm.

5. solis: piedzīvojums sākas

Piedzīvojums Sākas
Piedzīvojums Sākas

Voila! Mēs pabeidzām platformas spēlētāju, un mūsu varonis var doties bezgalīgā piedzīvojumā, uzvarot sikspārņus un iznīcinot kastes. ja rodas problēmas, varat lejupielādēt kodu no mūsu GitHub krātuves.

Tas ir tikai plāns, un noteikti ir daži uzlabojumi, ko var veikt, piemēram, dažāda veida ienaidnieki, prēmijas, labāka līmeņa ģenerēšana utt. Ja jūs izveidojat uzlabotu spēles versiju, kopīgojiet to komentāros zemāk! Lai iegūtu vairāk informācijas par GameGo un citu aparatūru ražotājiem un STEM pedagogiem, apmeklējiet mūsu vietni https://tinkergen.com/ un abonējiet mūsu biļetenu.

TinkerGen ir izveidojis Kickstarter kampaņu MARK (Make A Robot Kit), robotu komplektu kodēšanas, robotikas, AI mācīšanai!

Ieteicams: