Koodi kirjutamise õppimine võib olla pikk teekond. Peate mitte ainult leidma õppimise abistavaid ressursse, vaid peate leidma ka põnevaid projektiideid, mis hoiavad teie haridusteed õigel teel.
Videomängud annavad suurepärase võimaluse programmeerida midagi, mida saate nautida. Samuti saavad nad teile õpetada põhitõdesid, mida vajate heaks programmeerijaks. Selles artiklis uuritakse DIY pihuarvuti Arduino videomänguprojekti, et saaksite alustada.
Mida me teeme ja miks?
Enne selle artikli juhendi osasse sukeldumist on mõttekas uurida, mida me teeme ja miks me selle selle projekti jaoks valisime. Mängude tegemisel sellistele seadmetele nagu Arduinos on mitmeid väljakutseid.
- Salvestusruum: enamus Arduino lauad kaasas väga vähe RAM-i või välkmälu. See mitte ainult ei piira nende käitatava koodi hulka, vaid esitab ka väljakutseid muutujatega töötamisel.
- Töötlemisvõimsus: Arduinol, mida me kasutasime, on väikese võimsusega protsessor, nii et selle jaoks on võimatu luua ressursse nõudvaid rakendusi.
- Piiratud komponendid: Arduinos on saadaval palju kontakte, kuid paljud komponendid vajavad rohkem kui ühte. See piirab meid juhtnuppude ja kuvaväljundite osas.
Neid väljakutseid silmas pidades otsustasime luua pihuseadme, mis jookseb väga lihtsat reaktsioonipõhist mängu. Saate hõlpsasti teha muid mänge selle riistvara jaoks, millega me töötame, ja soovitame teil olla loominguline.
Mäng ise on väga lihtne. Ekraanile ilmub kolm plokki, millest kaks on kontuuriga ja üks täidetud, millest igaühe all on vastav füüsiline nupp. Mängija peab igas voorus mängimise jätkamiseks vajutama paremat nuppu ja kui ta vajutab valet nuppu või aeg saab otsa, on mäng läbi. Iga edukas nupuvajutus annab punkte. Mäng suurendab aeglaselt oma raskusi, vähendades saadaolevat reaktsiooniaega.
OLED-ekraani, Arduino ja nuppude juhtmestik
Selle protsessi esimene samm on pihuarvuti mängu ühendamine. Nagu näete ülaltoodud vooluringiskeemist, ei pea te alustamiseks palju ühendusi looma ja saate selle projekti jaoks kasutada isegi leivalauda.
Oleme juba avaldanud juhendi, mis aitab teil seda teha juhtnupud Arduino juurde. Meie Arduino akvaariumi monitori projekt näitab teile, kuidas kasutada OLED-ekraani sellise mikrokontrolleriga. Seetõttu keskendume ülejäänud artiklis selle projekti koodile.
Arduino pihuarvuti mängukood
Õige vormindamine ja korras failistruktuurid on väga olulised nii algajatele kui ka vanadele programmeerijatele. Tänate ennast selle eest, et leidsite aega oma koodi korralikult korraldamiseks, kui peate selle kunagi uuesti läbi vaatama.
Kood kasutab meie projekti aluse loomiseks peamist INO-faili. Samuti on olemas C++-fail meie kuva juhtimiseks, C++-fail mängu põhikoodi käitamiseks ja Arduino teegifail selle ühendamiseks.
Sukeldume sellesse koodi põhjalikumalt allpool, kuid soovitame teil tutvuda meiega kommenteeritud koodiga Arduino pihuarvutite mänguprojekt GitHubis. See aitab teil sellele artikliga koos viidata.
Raamatukogu fail (library.h)
Meie teegifailil on oluline roll, ühendades meie muud projektifailid, et need saaksid töötada ühe rakendusena. See fail sisaldab deklaratsioone, mis hõlmavad Arduino.h teeki ja kõiki meie mängukoodi funktsioone, mis peavad meie failide vahel töötama. Ilma selleta meie kood lihtsalt ei töötaks.
Peamine INO-fail (main.ino)
Nagu paljud Arduino projektid, algas ka see Arduino IDE pakutava vaikemalliga. See mall annab selle seadistamine ja silmus funktsioonid, mida kasutame funktsioonide kutsumiseks teistes failides. Sellel failil on ka deklaratsioon faili library.h lisamiseks.
Seadistusfunktsioon sobib ideaalselt meie ekraani ja nuppude lähtestamiseks, kuna see töötab ainult üks kord, kui Arduino lähtestatakse või sisse lülitatakse. Selleks kutsume oma kuvafailis funktsiooni disSetup() ja mängufailis funktsiooni butSetup().
Meie loop() funktsioon on veelgi lihtsam kui setup() funktsioon, meie mängufailist leitakse vaid üks väljakutse gameState() funktsioonile. Uurime seda üksikasjalikumalt hiljem artiklis.
Kuva koodifail (display.cpp)
Kasutame selle projekti jaoks SSD1306 OLED-ekraani, kuigi koodi vastavalt redigeerimisel saate kasutada ka teist tüüpi ekraani. See fail algab teegifaili kaasamisega, raamatukogu.h. Seejärel sisaldab see deklaratsioone teekide SPI, Wire, Adafruit_GX ja Adafruit_SSD1306 jaoks. Pärast seda määratleb see mõned konstandid, et pakkuda kuva seadeid.
Esimene funktsioon, dissetup, lähtestab kuva ja kuvab logoga alguskuva. Seejärel kustutab see ekraani umbes 2 sekundilise ootamise järel. Meie põhifail main.ino kutsub omas välja disSetup seadistamine funktsiooni.
Ülejäänud selle faili funktsioonid, välja arvatud timerBar(), moodustavad erinevad ekraanid, mida mängu jooksul nähakse. Mängu fail, game.cpp, kutsub kõiki neid funktsioone.
- startGame(): see funktsioon juhib esimest ekraani, mida mängija näeb. See lihtsalt küsib, kas nad on helistamise ajal valmis switchInstance mängufailist leitud funktsioon.
- startGame(): kui mängija alustab mängu, kuvatakse sellel ekraanil lühike pöördloendus. Seejärel muudab see mängu olekut sobivaks.
- inGame(): see on meie kuvamisfunktsioonidest kõige keerulisem, kasutades mängu iga vooru laadimiseks kolme muutujat. See algab lausega if, mis määrab, milline kolmest plaadist täita, millele järgneb klotside ning mängija taseme ja skoori kuvamine.
- timerBar(): see funktsioon kasutab muutujat, et kuvada ekraani allosas taimeriba. See näitab mängijale, kui palju aega tal igaks vooruks on.
- successScreen(): see on lihtne funktsioon, mis kuvab sõnumi iga kord, kui mängija on vooru edukalt lõpetanud.
- endGame(): see viimane funktsioon kuvab mängu ekraanil koos mängija punktisumma ja võimalusega mängu uuesti alustada.
Mängukoodi fail (game.cpp)
Viimase uuritava failina on aeg vaadata mängu koodi. See fail, nagu ka teised, algab faili library.h kaasamisega. See sisaldab ka pikka nimekirja erinevatest täisarvulistest muutujatest, mida me mängu ajal kasutame.
Funktsiooni butSetup() leiate enne kõike muud. Funktsioon setup() meie põhifailis kutsub esile butSetup. See funktsioon kasutab muutujaid, et seadistada meie nupud sisenditena, mida saame hiljem lugeda.
- switchInstance(): see funktsioon lülitub mängu eksemplaride vahel, alustades mängust ja mängu üle ekraanidest. See saab muutuja, mis annab teada, millisele mänguolekule lülituda. If-lause ootab nupuvajutust, et alustada mängu olekust startGame(). Teine if-lause alustab mängu uuesti olekust endGame()
- gameState(): see funktsioon määrab mängu raskusastme mängija skoori põhjal ja kutsub olenevalt mängu olekust õige funktsiooni. See algab rea if-lausetega, mis seavad muutujad mängija skoori põhjal, millele järgneb rohkem if-lauseid praeguse eksemplari kontrollimiseks.
- tileSelector(): see funktsioon genereerib juhusliku arvu vahemikus 0 kuni 2, mis annab mängule teada, milline kolmest plaadist tuleb igal ajahetkel täita.
- theGame(): see funktsioon on vaieldamatult kõige olulisem. See kutsub plaatide valija ja mängus funktsioone, valides uue paani ja kuvades selle ekraanil. Pärast seda leiate for-silmuse, mis toimib iga vooru taimerina. See sisaldab komplekti if-lauseid, mis tuvastavad nupuvajutused ja määravad, kas need on õiged.
Oma pihuarvuti Arduino mängu loomine
See artikkel on GitHubist leitud projektikoodi kaaslane. Lisateavet konkreetsete koodiridade kohta, mida oleme kasutanud, leiate nende failide kommentaaridest. Kuid võite selle lihtsalt oma Arduinosse laadida ja lõbu nautida.
Loovus on mängude arendamise maailmas võtmetähtsusega ja soovitame teil selle idee kõrval töötada ka oma mänguideede kallal.
10 parimat Arduino raadioprojekti
Loe edasi
Seotud teemad
- Programmeerimine
- DIY
- DIY projektiideed
- DIY projekti õpetused
- Arduino
- Programmeerimine
Autori kohta
![](/f/e5e8c7610882e46137378c651993b44c.jpg)
Samuel on Ühendkuningriigis asuv tehnoloogiakirjanik, kelle kirg on kõik isetegemine. Alustanud äritegevusega veebiarenduse ja 3D-printimise vallas ning töötanud aastaid kirjanikuna, pakub Samuel ainulaadset sissevaadet tehnoloogiamaailma. Keskendudes peamiselt isetegemise tehnoloogiaprojektidele, ei armasta ta muud kui lõbusate ja põnevate ideede jagamist, mida saate kodus proovida. Väljaspool tööd võib Samueli tavaliselt leida jalgrattaga sõitmas, arvutivideomänge mängimas või meeleheitlikult oma lemmiklooma krabiga suhelda.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin