Naučiť sa písať kód môže byť dlhá cesta. Nielenže musíte nájsť zdroje, ktoré vám pomôžu učiť sa, ale musíte tiež nájsť vzrušujúce nápady na projekty, ktoré udržia vaše vzdelávanie na správnej ceste.

Videohry poskytujú skvelú príležitosť naprogramovať niečo, čo vás bude baviť. A môžu vás tiež naučiť základy, ktoré potrebujete, aby ste boli dobrým programátorom. Tento článok skúma projekt ručnej videohry Arduino pre domácich majstrov, aby ste mohli začať.

Čo robíme a prečo?

Pred ponorením sa do sprievodcovskej časti tohto článku má zmysel preskúmať, čo vyrábame a prečo sme si to vybrali pre tento projekt. Vytváranie hier pre zariadenia ako Arduinos prináša niekoľko výziev.

  • Úložný priestor: Väčšina dosky Arduino prichádza s veľmi malou pamäťou RAM alebo flash. Nielenže to obmedzuje množstvo kódu, ktorý môžu spustiť, ale predstavuje to aj výzvy, pokiaľ ide o prácu s premennými.
  • Spracovateľský výkon: Arduino, ktoré sme použili, má procesor s nízkou spotrebou energie, takže preň nie je možné vytvárať aplikácie náročné na zdroje.
  • instagram viewer
  • Obmedzené komponenty: Arduinos majú k dispozícii veľa pinov, ale mnohé komponenty potrebujú viac ako jeden. To nás obmedzuje pri ovládaní a výstupoch displeja.

S ohľadom na tieto výzvy sme sa rozhodli vytvoriť vreckové zariadenie, ktoré spúšťa veľmi jednoduchú hru založenú na reakciách. Môžete ľahko vytvoriť iné hry pre hardvér, s ktorým pracujeme, a odporúčame vám, aby ste boli kreatívni.

Samotná hra je veľmi jednoduchá. Na obrazovke sa objavia tri bloky, dva ohraničené a jeden vyplnený, pričom každý má nižšie príslušné fyzické tlačidlo. Hráč musí každé kolo stlačiť správne tlačidlo, aby mohol pokračovať v hre, a ak stlačí nesprávne tlačidlo alebo mu vyprší čas, hra sa končí. Každé úspešné stlačenie tlačidla udeľuje body. Hra pomaly zvyšuje svoju náročnosť znížením reakčného času.

Zapojenie OLED displeja, Arduina a tlačidiel

Zapojenie vašej vreckovej hry je prvým krokom v tomto procese. Ako môžete vidieť na schéme zapojenia vyššie, na začatie nemusíte vytvárať veľa pripojení a dokonca môžete pre tento projekt použiť dosku.

Už sme zverejnili návod, ktorý vám pomôže drôtové tlačidlá k Arduinu. náš Projekt Arduino Aquarium Monitor ukazuje, ako používať OLED displej s mikrokontrolérom, ako je tento. Preto sa vo zvyšku tohto článku zameriame na kód pre tento projekt.

Ručný herný kód Arduino

Správne formátovanie a prehľadné štruktúry súborov sú veľmi dôležité pre začínajúcich aj skúsených programátorov. Poďakujete sami sebe, že ste si našli čas na úhľadné usporiadanie kódu, ak ho budete musieť niekedy prechádzať.

Kód používa hlavný súbor INO na vytvorenie základu nášho projektu. K dispozícii je tiež súbor C++ na ovládanie nášho displeja, súbor C++ na spustenie hlavného kódu hry a súbor knižnice Arduino na prepojenie všetkého dohromady.

Nižšie sa ponoríme hlbšie do tohto kódu, ale odporúčame vám pozrieť si komentovaný kód v našom Projekt Arduino Handheld Game na GitHub. Pomôže vám to uviesť ho spolu s týmto článkom.

Súbor knižnice (library.h)

Naša knižnica zohráva kľúčovú úlohu, spája naše ostatné projektové súbory dohromady, aby mohli fungovať ako jedna aplikácia. Tento súbor obsahuje vyhlásenia o zahrnutí knižnice Arduino.h a všetkých funkcií v rámci nášho herného kódu, ktoré musia fungovať medzi našimi súbormi. Bez toho by náš kód jednoducho nefungoval.

Hlavný súbor INO (main.ino)

Rovnako ako mnoho projektov Arduino, aj tento začal s predvolenou šablónou, ktorú poskytuje Arduino IDE. Tá šablóna to dáva nastaviť a slučka funkcie, ktoré používame na volanie funkcií v našich iných súboroch. Tento súbor má tiež vyhlásenie o zahrnutí súboru library.h.

Funkcia nastavenia je ideálna na inicializáciu nášho displeja a tlačidiel, pretože sa spustí iba raz, keď je Arduino resetované alebo zapnuté. Na tento účel voláme funkciu disSetup() v našom zobrazovacom súbore a funkciu butSetup() v našom súbore hry.

Naša funkcia loop() je ešte jednoduchšia ako funkcia setup() s jediným volaním funkcie gameState(), ktorá sa nachádza v našom súbore hry. Podrobnejšie to preskúmame neskôr v článku.

Súbor s kódom zobrazenia (display.cpp)

Pre tento projekt používame displej SSD1306 OLED, aj keď môžete použiť iný typ displeja, ak zodpovedajúcim spôsobom upravíte kód. Tento súbor začína zahrnutím súboru knižnice, knižnica.h. Potom obsahuje deklarácie pre knižnice SPI, Wire, Adafruit_GX a Adafruit_SSD1306. Potom definuje niektoré konštanty, ktoré poskytujú nastavenia pre zobrazenie.

Prvá funkcia, disSetup, inicializuje displej a zobrazí úvodnú obrazovku s logom. Potom po približne 2 sekundách vymaže displej. Náš hlavný súbor, main.ino, vo svojom volá disSetup nastaviť funkciu.

Ostatné funkcie v tomto súbore, okrem timerBar(), tvoria rôzne obrazovky, ktoré sa zobrazujú počas hry. súbor hry, hra.cpp, volá každú z týchto funkcií.

  • startGame(): Táto funkcia ovláda prvú obrazovku, ktorú hráč uvidí. Pri volaní sa jednoducho opýta, či sú pripravení switchInstance funkcia nájdená v súbore hry.
  • beginGame(): Keď hráč spustí hru, na tejto obrazovke sa zobrazí krátke odpočítavanie. Potom zmení stav hry tak, aby sa zhodoval.
  • inGame(): Toto je najkomplexnejšia z našich zobrazovacích funkcií, ktorá používa tri premenné na načítanie každého kola hry. Začína sa príkazom if, ktorý určuje, ktorá z troch dlaždíc sa má vyplniť, po ktorej nasleduje zobrazenie dlaždíc a hráčovej úrovne a skóre.
  • timerBar(): Táto funkcia používa premennú na zobrazenie lišty časovača v spodnej časti obrazovky. Ukazuje hráčovi, koľko času má na každé kolo.
  • successScreen(): Toto je jednoduchá funkcia, ktorá zobrazí správu vždy, keď hráč úspešne dokončí kolo.
  • endGame(): Táto posledná funkcia zobrazuje hru na obrazovke so skóre hráča a možnosťou začať hru znova.

Súbor herného kódu (game.cpp)

Nakoniec, ako posledný súbor na preskúmanie, je čas pozrieť sa na kód hry. Tento súbor, rovnako ako ostatné, začína zahrnutím súboru library.h. Obsahuje tiež dlhý zoznam rôznych celočíselných premenných, ktoré počas hry používame.

Funkciu butSetup() nájdete skôr ako čokoľvek iné. Funkcia setup() v našom hlavnom súbore volá butSetup. Táto funkcia používa premenné na nastavenie našich tlačidiel ako vstupov, ktoré si môžeme prečítať neskôr.

  • switchInstance(): Táto funkcia prepína medzi inštanciami hry, z úvodnej obrazovky na hru a cez obrazovky. Prijíma premennú, ktorá mu hovorí, na ktorý herný stav sa má prepnúť. Príkaz if čaká na stlačenie tlačidla na spustenie hry zo stavu startGame(). Ďalší príkaz if spustí hru znova od stavu endGame().
  • gameState(): Táto funkcia nastavuje náročnosť hry na základe skóre hráča a volá správnu funkciu v závislosti od stavu hry. Začína sa sériou príkazov if, ktoré nastavujú premenné na základe skóre hráča, po ktorých nasledujú ďalšie príkazy if na kontrolu aktuálneho prípadu.
  • tileSelector(): Táto funkcia generuje náhodné číslo medzi 0 a 2, ktoré povie hre, ktorú z troch dlaždíc má v danom čase vyplniť.
  • theGame(): Táto funkcia je pravdepodobne najdôležitejšia zo všetkých. Volá to tileSelector a v hre funkcií, výberom novej dlaždice a jej zobrazením na obrazovke. Potom nájdete cyklus for, ktorý funguje ako časovač pre každé kolo. Obsahuje sadu príkazov if, ktoré zachytávajú stlačenia tlačidiel a určujú, či sú správne.

Zostavte si svoju vlastnú ručnú hru Arduino

Tento článok je sprievodným prvkom kódu projektu, ktorý sa nachádza na GitHub. Viac informácií o konkrétnych riadkoch kódu, ktoré sme použili, nájdete v komentároch v týchto súboroch. Môžete ho však jednoducho nahrať do svojho Arduina a užiť si zábavu.

Kreativita je kľúčom vo svete vývoja hier a odporúčame vám, aby ste popri tomto pracovali aj na svojich vlastných nápadoch.

10 najlepších projektov rádia Arduino

Prečítajte si ďalej

zdieľamTweetujtezdieľamEmail

Súvisiace témy

  • Programovanie
  • DIY
  • DIY projektové nápady
  • Návody na DIY projekty
  • Arduino
  • Programovanie

O autorovi

Samuel L. Garbett (41 publikovaných článkov)

Samuel je technologický spisovateľ so sídlom v Spojenom kráľovstve s vášňou pre všetko, čo si sami urobia. Samuel, ktorý začal podnikať v oblasti vývoja webu a 3D tlače, spolu s dlhoročnou prácou spisovateľa ponúka jedinečný pohľad do sveta technológií. Zameriava sa hlavne na DIY technické projekty a nemiluje nič viac ako zdieľanie zábavných a vzrušujúcich nápadov, ktoré si môžete vyskúšať doma. Mimo práce možno Samuela zvyčajne nájsť bicyklovať, hrať počítačové videohry alebo sa zúfalo pokúšať komunikovať so svojím krabom.

Viac od Samuela L. Garbett

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber