Mācīšanās rakstīt kodu var būt garš ceļš. Jums ir ne tikai jāatrod resursi, kas palīdzētu jums mācīties, bet arī jāatrod aizraujošas projektu idejas, kas uztur jūsu izglītību pareizajā virzienā.

Videospēles sniedz lielisku iespēju ieprogrammēt kaut ko tādu, kas jums patīk. Viņi var arī iemācīt jums pamatus, kas nepieciešami, lai būtu labs programmētājs. Šajā rakstā ir apskatīts DIY rokas Arduino videospēļu projekts, lai jūs sāktu.

Ko mēs darām un kāpēc?

Pirms iedziļināties šī raksta ceļveža daļā, ir lietderīgi izpētīt, ko mēs darām un kāpēc esam to izvēlējušies šim projektam. Veidojot spēles tādām ierīcēm kā Arduinos, rodas vairākas problēmas.

  • Uzglabāšanas vieta: lielākā daļa Arduino dēļi komplektācijā ir ļoti maz RAM vai zibatmiņas. Tas ne tikai ierobežo koda daudzumu, ko tie var palaist, bet arī rada problēmas, strādājot ar mainīgajiem.
  • Apstrādes jauda: Arduino, kuru mēs izmantojām, ir mazjaudas centrālais procesors, tāpēc tam nav iespējams izveidot resursus izsalkušas lietojumprogrammas.
  • Ierobežoti komponenti: Arduinos ir pieejams daudz tapu, taču daudziem komponentiem ir nepieciešams vairāk nekā viens. Tas ierobežo mūs, kad runa ir par vadības ierīcēm un displeja izvadēm.

Ņemot vērā šos izaicinājumus, mēs nolēmām izveidot rokas ierīci, kas vada ļoti vienkāršu uz reakciju balstītu spēli. Varat viegli izveidot citas spēles aparatūrai, ar kuru mēs strādājam, un mēs aicinām jūs būt radošiem.

Pati spēle ir ļoti vienkārša. Ekrānā parādās trīs bloki, divi ieskicēti un viens aizpildīts, katrs ar atbilstošu fizisko pogu zemāk. Spēlētājam katrā kārtā ir jānospiež labā poga, lai turpinātu spēlēt, un, ja viņš nospiež nepareizo pogu vai pietrūkst laika, spēle ir beigusies. Katra veiksmīga pogas nospiešana piešķir punktus. Spēle lēnām palielina grūtības līmeni, samazinot pieejamo reakcijas laiku.

OLED displeja, Arduino un pogu pievienošana

Rokas spēles vadu pievienošana ir pirmais solis šajā procesā. Kā redzat iepriekš redzamajā shēmas shēmā, jums nav jāizveido daudz savienojumu, lai sāktu darbu, un šim projektam varat pat izmantot maizes dēli.

Mēs jau esam publicējuši ceļvedi, kas jums palīdzēs vadu spiedpogas uz Arduino. Mūsu Arduino akvārija monitora projekts parāda, kā izmantot OLED displeju ar šādu mikrokontrolleri. Tādējādi pārējā šī raksta daļā mēs koncentrēsimies uz šī projekta kodu.

Arduino rokas spēļu kods

Pareizs formatējums un sakārtotas failu struktūras ir ļoti svarīgas gan iesācējiem, gan pieredzējušiem programmētājiem. Jūs pateiksiet sev pateicību par to, ka veltījāt laiku, lai kārtīgi sakārtotu savu kodu, ja jums tas kādreiz būs jāpārskata.

Kods izmanto galveno INO failu, lai izveidotu mūsu projekta pamatu. Ir arī C++ fails, lai kontrolētu mūsu displeju, C++ fails, lai palaistu galveno spēles kodu, un Arduino bibliotēkas fails, lai to visu savienotu.

Tālāk mēs iedziļināsimies šajā kodā, taču iesakām apskatīt mūsu komentāros sniegto kodu Arduino rokas spēļu projekts vietnē GitHub. Tas palīdzēs jums atsaukties uz to kopā ar šo rakstu.

Bibliotēkas fails (library.h)

Mūsu bibliotēkas failam ir izšķiroša nozīme, savienojot citus mūsu projektu failus, lai tie varētu darboties kā viena lietojumprogramma. Šajā failā ir ietvertas deklarācijas, lai iekļautu Arduino.h bibliotēku un visas mūsu spēles koda funkcijas, kurām jādarbojas starp mūsu failiem. Bez tā mūsu kods vienkārši nedarbotos.

Galvenais INO fails (main.ino)

Tāpat kā daudzi Arduino projekti, arī šis sākās ar noklusējuma veidni, ko nodrošināja Arduino IDE. Šī veidne to dod uzstādīt un cilpa funkcijas, ko izmantojam, lai izsauktu funkcijas citos failos. Šim failam ir arī deklarācija, lai iekļautu failu library.h.

Iestatīšanas funkcija ir ideāli piemērota mūsu displeja un pogu inicializēšanai, jo tā darbojas tikai vienu reizi, kad Arduino ir atiestatīts vai ieslēgts. Šim nolūkam mēs izsaucam funkciju disSetup() mūsu displeja failā un funkciju butSetup() mūsu spēles failā.

Mūsu cilpas() funkcija ir pat vienkāršāka nekā setup() funkcija, jo mūsu spēles failā ir tikai viens izsaukums uz gameState() funkciju. Mēs to sīkāk izpētīsim vēlāk rakstā.

Displeja koda fails (display.cpp)

Šim projektam mēs izmantojam SSD1306 OLED displeju, lai gan varat izmantot cita veida displeju, ja attiecīgi rediģējat kodu. Šis fails sākas ar bibliotēkas faila iekļaušanu, bibliotēka.h. Pēc tam tajā ir iekļautas SPI, Wire, Adafruit_GX un Adafruit_SSD1306 bibliotēku deklarācijas. Pēc tam tas definē dažas konstantes, lai nodrošinātu displeja iestatījumus.

Pirmā funkcija, dissetup, inicializē displeju un parāda logotipa uzplaiksnījumu ekrānu. Pēc aptuveni 2 sekunžu gaidīšanas tas notīra displeju. Mūsu galvenais fails main.ino savā izsauc disSetup uzstādīt funkcija.

Pārējās šī faila funkcijas, izņemot timerBar (), veido dažādus ekrānus, kas redzami spēles laikā. Spēles fails, spēle.cpp, izsauc katru no šīm funkcijām.

  • startGame(): šī funkcija kontrolē pirmo ekrānu, ko spēlētājs redz. Tas vienkārši jautā, vai viņi ir gatavi, zvanot uz switchInstance funkcija, kas atrodama spēles failā.
  • startGame(): Kad spēlētājs sāk spēli, šajā ekrānā tiek parādīta īsa atpakaļskaitīšana. Pēc tam tas maina spēles stāvokli, lai tas atbilstu.
  • inGame(): šī ir vissarežģītākā no mūsu displeja funkcijām, izmantojot trīs mainīgos, lai ielādētu katru spēles kārtu. Tas sākas ar paziņojumu if, kas nosaka, kura no trim elementiem jāaizpilda, pēc tam tiek parādītas flīzes un spēlētāja līmenis un rezultāts.
  • timerBar(): šī funkcija izmanto mainīgo, lai parādītu taimera joslu ekrāna apakšā. Tas parāda spēlētājam, cik daudz laika viņam ir katrai kārtai.
  • successScreen(): šī ir vienkārša funkcija, kas parāda ziņojumu katru reizi, kad spēlētājs veiksmīgi pabeidz kārtu.
  • endGame(): šī pēdējā funkcija ekrānā parāda spēli ar spēlētāja rezultātu un iespēju sākt spēli no jauna.

Spēles koda fails (game.cpp)

Visbeidzot, kā pēdējo izpētīto failu, ir pienācis laiks apskatīt spēles kodu. Šis fails, tāpat kā citi, sākas ar faila library.h iekļaušanu. Tajā ir arī garš saraksts ar dažādiem veseliem mainīgajiem, kurus mēs izmantojam spēles laikā.

Funkciju butSetup () atradīsit pirms jebko citu. Funkcija setup() mūsu galvenajā failā izsauc butSetup. Šī funkcija izmanto mainīgos, lai iestatītu mūsu pogas kā ievades datus, ko mēs varam lasīt vēlāk.

  • switchInstance(): šī funkcija pārslēdzas starp spēles gadījumiem, no sākuma ekrāna uz spēli un spēli pa ekrāniem. Tas saņem mainīgo, lai pateiktu, uz kuru spēles stāvokli pārslēgties. Ja paziņojums gaida pogas nospiešanu, lai sāktu spēli no startGame() stāvokļa. Vēl viens if paziņojums sāk spēli no jauna no endGame() stāvokļa.
  • gameState(): šī funkcija iestata spēles grūtības pakāpi, pamatojoties uz spēlētāja rezultātu, un izsauc pareizo funkciju atkarībā no spēles stāvokļa. Tas sākas ar vairākiem if paziņojumiem, kas nosaka mainīgos lielumus, pamatojoties uz spēlētāja rezultātu, kam seko papildu if paziņojumi, lai pārbaudītu pašreizējo gadījumu.
  • tileSelector(): šī funkcija ģenerē nejaušu skaitli no 0 līdz 2, kas norāda spēlei, kuru no trim elementiem jebkurā brīdī aizpildīt.
  • theGame(): šī funkcija neapšaubāmi ir vissvarīgākā no visām. To sauc par flīžu atlasītājs un spēlē funkcijas, izvēloties jaunu elementu un parādot to ekrānā. Pēc tam jūs atradīsiet for cilpu, kas darbojas kā taimeris katrā kārtā. Tajā ir ietverta paziņojumu kopa, kas uztver pogas nospiešanu un nosaka, vai tie ir pareizi.

Izveidojiet savu rokas Arduino spēli

Šis raksts ir pavadonis projekta kodam, kas atrodams vietnē GitHub. Plašāku informāciju par konkrētajām koda rindām, ko esam izmantojuši, varat atrast šo failu komentāros. Taču varat arī vienkārši ielādēt to savā Arduino un izbaudīt jautrību.

Radošums ir galvenais spēļu izstrādes pasaulē, un mēs aicinām jūs strādāt pie savām spēļu idejām līdztekus šai idejai.

10 labākie Arduino radio projekti

Lasiet Tālāk

DalītiesČivinātDalītiesE-pasts

Saistītās tēmas

  • Programmēšana
  • DIY
  • DIY projektu idejas
  • DIY projektu apmācības
  • Arduino
  • Programmēšana

Par autoru

Semjuels L. Garbets (Publicēts 41 raksts)

Samuels ir Apvienotajā Karalistē dzīvojošs tehnoloģiju rakstnieks, kurš aizraujas ar visu, ko darāt. Uzsācis uzņēmējdarbību tīmekļa izstrādes un 3D drukāšanas jomā, kā arī ilgus gadus strādājis par rakstnieku, Samuels piedāvā unikālu ieskatu tehnoloģiju pasaulē. Viņš galvenokārt koncentrējas uz DIY tehnoloģiju projektiem, un viņam nekas vairāk patīk, kā vien dalīties jautrās un aizraujošās idejās, kuras varat izmēģināt mājās. Ārpus darba Samuelu parasti var atrast braucam ar velosipēdu, spēlējam datora videospēles vai izmisīgi mēģina sazināties ar savu mājdzīvnieku krabi.

Vairāk no Samuela L. Garbets

Abonējiet mūsu biļetenu

Pievienojieties mūsu informatīvajam izdevumam, lai saņemtu tehniskos padomus, pārskatus, bezmaksas e-grāmatas un ekskluzīvus piedāvājumus!

Noklikšķiniet šeit, lai abonētu