Mokymasis rašyti kodą gali būti ilga kelionė. Jūs turite ne tik rasti išteklių, kurie padėtų jums mokytis, bet ir įdomių projektų idėjų, kurios padės išlaikyti jūsų išsilavinimą.

Vaizdo žaidimai suteikia puikią galimybę užprogramuoti tai, kas jums patinka. Jie taip pat gali išmokyti jus pagrindų, kurių reikia norint būti geru programuotoju. Šiame straipsnyje nagrinėjamas „pasidaryk pats“ delninis „Arduino“ vaizdo žaidimų projektas, kad galėtumėte pradėti.

Ką gaminame ir kodėl?

Prieš pasinerdami į šio straipsnio vadovo dalį, prasminga ištirti, ką gaminame ir kodėl pasirinkome tai šiam projektui. Kuriant žaidimus tokiems įrenginiams kaip „Arduinos“ kyla keletas iššūkių.

  • Sandėliavimo vieta: dauguma Arduino plokštės turi labai mažai RAM arba „flash“ atminties. Tai ne tik apriboja kodo, kurį jie gali paleisti, kiekį, bet ir kelia iššūkių dirbant su kintamaisiais.
  • Apdorojimo galia: mūsų naudojamas „Arduino“ turi mažos galios procesorių, todėl jam neįmanoma sukurti resursų reikalaujančių programų.
  • Riboti komponentai: „Arduinos“ turi daug kaiščių, tačiau daugeliui komponentų reikia daugiau nei vieno. Tai riboja mus, kai kalbame apie valdiklius ir ekrano išėjimus.

Turėdami omenyje šiuos iššūkius, nusprendėme sukurti delninį įrenginį, kuriame būtų vykdomas labai paprastas reakcija paremtas žaidimas. Galite nesunkiai sukurti kitų žaidimų aparatinei įrangai, su kuria dirbame, todėl raginame būti kūrybiškus.

Pats žaidimas labai paprastas. Ekrane pasirodo trys blokai, du su kontūrais ir vienas užpildytas, kiekviename apačioje yra atitinkamas fizinis mygtukas. Žaidėjas turi paspausti dešinįjį mygtuką kiekvieną raundą, kad tęstų žaidimą, o jei paspaudžia neteisingą mygtuką arba pasibaigia laikas, žaidimas baigiasi. Kiekvienas sėkmingas mygtuko paspaudimas suteikia taškų. Žaidimas lėtai padidina savo sunkumus, sumažindamas turimą reakcijos laiką.

OLED ekrano, Arduino ir mygtukų prijungimas

Pirmasis šio proceso žingsnis yra delninio žaidimo prijungimas. Kaip matote aukščiau pateiktoje grandinės schemoje, norint pradėti, nereikia užmegzti daug jungčių, o šiam projektui netgi galite naudoti duonos lentą.

Mes jau paskelbėme vadovą, kuris jums padės laidiniai mygtukai prie Arduino. Mūsų Arduino akvariumo monitoriaus projektas parodyta, kaip naudoti OLED ekraną su tokiu mikrovaldikliu. Likusioje šio straipsnio dalyje daugiausia dėmesio skirsime šio projekto kodui.

Arduino delninio žaidimo kodas

Tinkamas formatavimas ir tvarkingos failų struktūros yra labai svarbūs pradedantiesiems ir patyrusiems programuotojams. Būsite dėkingi sau, kad skyrėte laiko tvarkingai sutvarkyti kodą, jei kada nors teks jį peržiūrėti.

Kodas naudoja pagrindinį INO failą, kad sudarytų mūsų projekto pagrindą. Taip pat yra C++ failas, skirtas valdyti mūsų ekraną, C++ failas, skirtas pagrindiniam žaidimo kodui paleisti, ir Arduino bibliotekos failas, skirtas visa tai sujungti.

Toliau mes pasinersime į šį kodą, bet raginame peržiūrėti komentuojamą kodą mūsų svetainėje „Arduino Handheld Game“ projektas „GitHub“.. Tai padės jums nurodyti jį kartu su šiuo straipsniu.

Bibliotekos failas (library.h)

Mūsų bibliotekos failas atlieka labai svarbų vaidmenį, sujungiant kitus projekto failus, kad jie veiktų kaip viena programa. Šiame faile yra deklaracijų, kad būtų įtraukta Arduino.h biblioteka ir visos žaidimo kodo funkcijos, kurios turi veikti tarp failų. Be to mūsų kodas tiesiog neveiks.

Pagrindinis INO failas (main.ino)

Kaip ir daugelis Arduino projektų, šis prasidėjo nuo numatytojo šablono, kurį pateikė Arduino IDE. Tas šablonas tai suteikia sąranka ir kilpa funkcijos, kurias naudojame funkcijoms iškviesti kituose failuose. Šiame faile taip pat yra deklaracija įtraukti failą library.h.

Sąrankos funkcija idealiai tinka norint inicijuoti mūsų ekraną ir mygtukus, nes ji veikia tik vieną kartą, kai Arduino atstatomas arba įjungiamas. Tam mes vadiname funkciją disSetup() savo rodymo faile ir funkciją butSetup() žaidimo faile.

Mūsų funkcija „loop()“ yra dar paprastesnė nei „setup()“ – mūsų žaidimo faile yra tik vienas iškvietimas į gameState() funkciją. Mes tai išsamiau išnagrinėsime vėliau straipsnyje.

Ekrano kodo failas (display.cpp)

Šiam projektui naudojame SSD1306 OLED ekraną, tačiau galite naudoti kitokio tipo ekraną, jei atitinkamai redaguosite kodą. Šis failas prasideda įtraukus bibliotekos failą, biblioteka.h. Tada jis apima SPI, Wire, Adafruit_GX ir Adafruit_SSD1306 bibliotekų deklaracijas. Po to jis apibrėžia kai kurias konstantas, kad pateiktų ekrano nustatymus.

Pirmoji funkcija, dissetup, inicijuoja ekraną ir parodo logotipo paleidimo ekraną. Tada jis išvalo ekraną, palaukęs maždaug 2 sekundes. Mūsų pagrindinis failas main.ino iškviečia disSetup savo sąranka funkcija.

Likusios šio failo funkcijos, išskyrus timerBar (), sudaro skirtingus žaidimo ekranus. Žaidimo failas, game.cpp, iškviečia kiekvieną iš šių funkcijų.

  • startGame(): Ši funkcija valdo pirmąjį žaidėjo matomą ekraną. Jis tiesiog klausia, ar jie yra pasirengę skambinant switchInstance funkcija, rasta žaidimo faile.
  • startGame(): Kai žaidėjas pradeda žaidimą, šiame ekrane rodomas trumpas atgalinis skaičiavimas. Tada jis pakeičia žaidimo būseną, kad ji atitiktų.
  • inGame(): Tai pati sudėtingiausia mūsų rodymo funkcija, naudojant tris kintamuosius kiekvienam žaidimo etapui įkelti. Jis prasideda teiginiu if, kuris nustato, kurią iš trijų plytelių reikia užpildyti, o po to rodomos plytelės ir žaidėjo lygis bei rezultatas.
  • timerBar(): ši funkcija naudoja kintamąjį, kad būtų rodoma laikmačio juosta ekrano apačioje. Tai rodo žaidėjui, kiek laiko jie turi kiekvienam raundui.
  • successScreen(): Tai paprasta funkcija, kuri rodo pranešimą kiekvieną kartą, kai žaidėjas sėkmingai užbaigia raundą.
  • endGame(): ši paskutinė funkcija ekrane rodo žaidimą su žaidėjo rezultatu ir galimybe pradėti žaidimą iš naujo.

Žaidimo kodo failas (game.cpp)

Galiausiai, kaip paskutinį failą, kurį reikia ištirti, laikas pažvelgti į žaidimo kodą. Šis failas, kaip ir kiti, prasideda įtraukiant failą library.h. Jame taip pat yra ilgas sąrašas įvairių sveikųjų kintamųjų, kuriuos naudojame žaidimo metu.

Funkciją butSetup() rasite prieš ką nors kita. Funkcija setup() mūsų pagrindiniame faile iškviečia butSetup. Ši funkcija naudoja kintamuosius, kad nustatytų mūsų mygtukus kaip įvestis, kurias galėsime perskaityti vėliau.

  • switchInstance(): Ši funkcija perjungia žaidimo egzempliorius nuo pradžios ekrano iki žaidimo ir žaidimo per ekranus. Jis gauna kintamąjį, nurodantį, į kurią žaidimo būseną pereiti. Jei sakinys laukia mygtuko paspaudimo, kad žaidimas būtų pradėtas nuo startGame() būsenos. Kitas if sakinys vėl pradeda žaidimą nuo endGame() būsenos.
  • gameState(): Ši funkcija nustato žaidimo sudėtingumą pagal žaidėjo rezultatą ir iškviečia reikiamą funkciją, priklausomai nuo žaidimo būsenos. Pradedama nuo if teiginių, kurie nustato kintamuosius pagal žaidėjo rezultatą, serija, po kurių seka daugiau if teiginių, skirtų dabartiniam egzemplioriui patikrinti.
  • tileSelector(): ši funkcija generuoja atsitiktinį skaičių nuo 0 iki 2, kuris nurodo žaidimui, kurią iš trijų plytelių reikia užpildyti bet kuriuo metu.
  • theGame(): ši funkcija, be abejo, yra pati svarbiausia. Tai vadina plytelių parinkiklis ir žaidime funkcijas, pasirenkant naują plytelę ir pateikiant ją ekrane. Po to rasite už kilpą, kuri veikia kaip kiekvieno raundo laikmatis. Jame yra teiginių, kurie paima mygtukų paspaudimus ir nustato, ar jie teisingi, rinkinys.

Sukurkite savo delninį „Arduino“ žaidimą

Šis straipsnis yra projekto kodo, rasto GitHub, priedas. Daugiau informacijos apie konkrečias mūsų naudotas kodo eilutes galite rasti tų failų komentaruose. Tačiau taip pat galite tiesiog įkelti jį į savo „Arduino“ ir mėgautis linksmybėmis.

Kūrybiškumas yra labai svarbus žaidimų kūrimo pasaulyje, todėl raginame kartu kurti ir savo žaidimų idėjas.

10 geriausių „Arduino“ radijo projektų

Skaitykite toliau

DalintisTviteryjeDalintisEl. paštas

Susijusios temos

  • Programavimas
  • DIY
  • „Pasidaryk pats“ projektų idėjos
  • „Pasidaryk pats“ projekto vadovėliai
  • Arduino
  • Programavimas

Apie autorių

Samuelis L. Garbettas (41 straipsnis paskelbtas)

Samuelis yra JK gyvenantis technologijų rašytojas, aistringas viskam, ką daryti „pasidaryk pats“. Pradėjęs verslą interneto svetainių kūrimo ir 3D spausdinimo srityse bei ilgus metus dirbęs rašytoju, Samuelis siūlo unikalų įžvalgą į technologijų pasaulį. Daugiausia dėmesio skiriantis „pasidaryk pats“ technologijų projektams, jam patinka tik dalytis smagiomis ir įdomiomis idėjomis, kurias galite išbandyti namuose. Ne darbo vietoje Samuelis dažniausiai važiuoja dviračiu, žaidžia kompiuterinius vaizdo žaidimus arba desperatiškai bando bendrauti su savo augintiniu krabu.

Daugiau iš Samuel L. Garbettas

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia