Učenje pisanja koda može biti dugo putovanje. Ne samo da morate pronaći resurse koji će vam pomoći u učenju, već morate pronaći i uzbudljive projektne ideje koje održavaju vaše obrazovanje na pravom putu.

Video igre pružaju sjajnu priliku za programiranje nečega u čemu možete uživati. Oni vas također mogu naučiti osnovama koje su vam potrebne da biste bili dobar programer. Ovaj članak istražuje projekt DIY ručne Arduino video igre kako biste započeli.

Što izrađujemo i zašto?

Prije nego što uđemo u dio vodiča ovog članka, ima smisla istražiti što radimo i zašto smo to odabrali za ovaj projekt. Nekoliko izazova dolazi s izradom igara za uređaje kao što je Arduinos.

  • Prostor za pohranu: Najviše Arduino ploče dolaze s vrlo malo RAM-a ili flash memorije. Ne samo da ovo ograničava količinu koda koji mogu pokrenuti, već predstavlja i izazove kada je u pitanju rad s varijablama.
  • Procesna snaga: Arduino koji smo koristili ima CPU male snage, tako da je nemoguće za njega kreirati aplikacije koje traže resurse.
  • Ograničene komponente: Arduinos ima puno dostupnih pinova, ali mnoge komponente trebaju više od jednog. To nas ograničava kada su u pitanju kontrole i izlazi na zaslonu.

Imajući na umu ove izazove, odlučili smo stvoriti ručni uređaj koji pokreće vrlo jednostavnu igru ​​temeljenu na reakciji. Lako biste mogli napraviti druge igre za hardver s kojim radimo, a mi vas potičemo da budete kreativni.

Sama igra je vrlo jednostavna. Na zaslonu se pojavljuju tri bloka, dva ocrtana i jedan popunjen, svaki s odgovarajućim fizičkim gumbom ispod. Igrač mora svaki krug pritisnuti desnu tipku kako bi nastavio igrati, a ako pritisne krivu tipku ili ponestane vremena igra je gotova. Svaki uspješan pritisak na gumb dodjeljuje bodove. Igra polako povećava svoje poteškoće smanjujući dostupno vrijeme reakcije.

Povezivanje OLED zaslona, ​​Arduina i tipki

Spajanje vaše ručne igre prvi je korak u ovom procesu. Kao što možete vidjeti u dijagramu strujnog kruga iznad, ne morate napraviti mnogo veza da biste započeli, a čak možete koristiti i matičnu ploču za ovaj projekt.

Već smo objavili vodič koji će vam pomoći žičane tipke za Arduino. Naše Projekt Arduino Aquarium Monitor pokazuje vam kako koristiti OLED zaslon s ovakvim mikrokontrolerom. Kao takvi, do kraja ovog članka usredotočit ćemo se na kod za ovaj projekt.

Kod ručne igre Arduino

Pravilno formatiranje i uredne strukture datoteka vrlo su važni kako za početnike tako i za programere veterane. Bit ćete zahvalni što ste odvojili vrijeme da uredno organizirate svoj kod ako se ikada budete morali vraćati kroz njega.

Kod koristi glavnu INO datoteku kao temelj našeg projekta. Tu je i C++ datoteka za upravljanje našim zaslonom, C++ datoteka za pokretanje glavnog koda igre i datoteka Arduino biblioteke koja sve to povezuje.

U nastavku ćemo dublje zaroniti u ovaj kod, ali potičemo vas da pogledate komentirani kod u našem Projekt ručne igre Arduino na GitHubu. Pomoći će vam da ga pogledate uz ovaj članak.

Datoteka knjižnice (library.h)

Naša datoteka knjižnice ima ključnu ulogu, povezujući naše ostale projektne datoteke zajedno kako bi mogle raditi kao jedna aplikacija. Ova datoteka sadrži deklaracije za uključivanje Arduino.h biblioteke i svih funkcija unutar našeg koda igre koje trebaju raditi između naših datoteka. Bez toga, naš kod jednostavno ne bi funkcionirao.

Glavna INO datoteka (main.ino)

Kao i mnogi Arduino projekti, i ovaj je započeo sa zadanim predloškom koji pruža Arduino IDE. Taj predložak to daje postaviti i petlja funkcije koje koristimo za pozivanje funkcija u našim drugim datotekama. Ova datoteka također ima deklaraciju koja uključuje datoteku library.h.

Funkcija postavljanja idealna je za inicijalizaciju našeg zaslona i gumba, jer se pokreće samo jednom kada se Arduino resetuje ili uključi. Za to pozivamo funkciju disSetup() u našoj datoteci prikaza i butSetup() funkciju u našoj datoteci igre.

Naša funkcija loop() čak je jednostavnija od funkcije setup(), sa samo jednim pozivom funkcije gameState() koja se nalazi u našoj datoteci igre. To ćemo detaljnije istražiti kasnije u članku.

Datoteka koda prikaza (display.cpp)

Za ovaj projekt koristimo SSD1306 OLED zaslon, iako možete koristiti drugu vrstu zaslona ako u skladu s tim uredite kod. Ova datoteka počinje uključivanjem datoteke biblioteke, knjižnica.h. Zatim uključuje deklaracije za biblioteke SPI, Wire, Adafruit_GX i Adafruit_SSD1306. Nakon toga, definira neke konstante za pružanje postavki za zaslon.

Prva funkcija, disSetup, inicijalizira zaslon i prikazuje početni zaslon s logotipom. Zatim briše zaslon nakon čekanja otprilike 2 sekunde. Naša glavna datoteka, main.ino, poziva disSetup u svom postaviti funkcija.

Ostale funkcije u ovoj datoteci, osim timerBar(), čine različite zaslone koji se mogu vidjeti tijekom igre. Datoteka igre, igra.cpp, poziva svaku od ovih funkcija.

  • startGame(): Ova funkcija kontrolira prvi ekran koji igrač vidi. Jednostavno pita jesu li spremni dok poziva switchInstance funkcija pronađena u datoteci igre.
  • startingGame(): Nakon što igrač započne igru, ovaj zaslon prikazuje kratko odbrojavanje. Zatim mijenja stanje igre kako bi odgovaralo.
  • inGame(): Ovo je najsloženija od naših funkcija prikaza, koja koristi tri varijable za učitavanje svake runde igre. Počinje naredbom if koja određuje koju od tri pločice treba popuniti, nakon čega slijedi prikaz pločica te razine i rezultata igrača.
  • timerBar(): Ova funkcija koristi varijablu za prikaz trake timera na dnu zaslona. Pokazuje igraču koliko vremena ima za svaki krug.
  • successScreen(): Ovo je jednostavna funkcija koja prikazuje poruku svaki put kada igrač uspješno završi rundu.
  • endGame(): Ova konačna funkcija prikazuje igru ​​preko zaslona s igračevim rezultatom i opcijom ponovnog pokretanja igre.

Datoteka koda igre (game.cpp)

Konačno, kao posljednju datoteku koju treba istražiti, vrijeme je da pogledate kod igre. Ova datoteka, kao i ostale, počinje uključivanjem datoteke library.h. Također sadrži dugi popis različitih cjelobrojnih varijabli koje koristimo tijekom igre.

Pronaći ćete funkciju butSetup() prije svega. Funkcija setup() u našoj glavnoj datoteci poziva butSetup. Ova funkcija koristi varijable za postavljanje naših gumba kao ulaza koje možemo čitati kasnije.

  • switchInstance(): Ova funkcija prebacuje između instanci igre, od početnog zaslona do zaslona igre i igre preko zaslona. Prima varijablu koja mu govori u koje stanje igre da se prebaci. Naredba if čeka da se pritisne gumb za pokretanje igre iz stanja startGame(). Drugi if izraz ponovno pokreće igru ​​iz stanja endGame().
  • gameState(): Ova funkcija postavlja poteškoću igre na temelju rezultata igrača i poziva pravu funkciju ovisno o stanju igre. Započinje nizom if naredbi koje postavljaju varijable na temelju rezultata igrača, nakon čega slijedi više if izjava za provjeru trenutne instance.
  • tileSelector(): Ova funkcija generira nasumični broj između 0 i 2 koji govori igri koju od tri pločice treba ispuniti u bilo kojem trenutku.
  • theGame(): Ova funkcija je vjerojatno najvažnija od svih. Poziva se tileSelector i u igri funkcije, odabirom nove pločice i prikazivanjem na zaslonu. Nakon toga, pronaći ćete for petlju koja djeluje kao mjerač vremena za svaki krug. Sadrži skup if naredbi koje poduzimaju pritiske gumba i određuju jesu li točne.

Izrada vlastite ručne Arduino igre

Ovaj je članak pratilac koda projekta koji se nalazi na GitHubu. Više informacija o određenim redovima koda koje smo koristili možete pronaći u komentarima u tim datotekama. Ali također ste dobrodošli da ga jednostavno učitate na svoj Arduino i uživate u zabavi.

Kreativnost je ključna u svijetu razvoja igara i potičemo vas da radite na svojim idejama igara uz ovu.

10 najboljih Arduino radio projekata

Pročitajte dalje

UdioCvrkutUdioE-mail

Povezane teme

  • Programiranje
  • DIY
  • DIY projektne ideje
  • Upute za DIY projekte
  • Arduino
  • Programiranje

O autoru

Samuel L. Garbett (Objavljen 41 članak)

Samuel je pisac o tehnologiji sa sjedištem u Ujedinjenom Kraljevstvu sa strašću za sve stvari DIY. Nakon što je pokrenuo poslove na području web razvoja i 3D ispisa, uz dugogodišnji rad kao pisac, Samuel nudi jedinstven uvid u svijet tehnologije. Usredotočujući se uglavnom na DIY tehničke projekte, ne voli ništa više od dijeljenja zabavnih i uzbudljivih ideja koje možete isprobati kod kuće. Izvan posla, Samuela se obično može naći kako vozi bicikl, igra PC video igrice ili očajnički pokušava komunicirati sa svojim rakovim ljubimcem.

Više od Samuela L. Garbett

Pretplatite se na naše obavijesti

Pridružite se našem biltenu za tehničke savjete, recenzije, besplatne e-knjige i ekskluzivne ponude!

Kliknite ovdje za pretplatu