Учење писања кода може бити дуго путовање. Не само да морате пронаћи ресурсе који ће вам помоћи да научите, већ морате пронаћи и узбудљиве пројектне идеје које одржавају ваше образовање на правом путу.
Видео игре пружају сјајну прилику да програмирате нешто у чему можете уживати. Такође вас могу научити основама које су вам потребне да бисте били добар програмер. Овај чланак истражује пројекат „уради сам“ ручне Ардуино видео игре да бисте започели.
Шта правимо и зашто?
Пре него што уђемо у део са водичем овог чланка, има смисла истражити шта правимо и зашто смо то изабрали за овај пројекат. Неколико изазова долази са прављењем игара за уређаје као што је Ардуинос.
- Простор за складиштење: Највише Ардуино плоче долазе са врло мало РАМ-а или флеш меморије. Не само да ово ограничава количину кода који могу да покрену, већ представља и изазове када је у питању рад са променљивим.
- Процесна снага: Ардуино који смо користили има ЦПУ мале снаге, тако да је немогуће креирати апликације које захтевају ресурсе за њега.
- Ограничене компоненте: Ардуинос има много доступних пинова, али многим компонентама је потребно више од једног. Ово нас ограничава када су у питању контроле и излази на екрану.
Имајући на уму ове изазове, одлучили смо да направимо ручни уређај који покреће врло једноставну игру засновану на реакцијама. Лако бисте могли да направите друге игре за хардвер са којим радимо, а ми вас охрабрујемо да будете креативни.
Сама игра је веома једноставна. На екрану се појављују три блока, два оцртана и један попуњен, сваки са одговарајућим физичким дугметом испод. Играч мора да притисне десно дугме у свакој рунди да би наставио да игра, а ако притисне погрешно дугме или понестане времена, игра је готова. Сваки успешан притисак на дугме додељује бодове. Игра полако повећава своје потешкоће смањењем расположивог времена реакције.
Повезивање ОЛЕД екрана, Ардуина и дугмади
Повезивање ваше ручне игре је први корак у овом процесу. Као што можете видети у дијаграму струјног кола изнад, не морате да правите много веза да бисте започели, а чак можете да користите и матичну плочу за овај пројекат.
Већ смо објавили водич који ће вам помоћи жичане тастере за Ардуино. Наше Ардуино пројекат монитора акваријума показује вам како да користите ОЛЕД екран са оваквим микроконтролером. Као такви, фокусираћемо се на код за овај пројекат до краја овог чланка.
Ардуино код ручне игре
Правилно форматирање и уредне структуре датотека су веома важни како за почетнике тако и за програмере ветеране. Бићете захвални себи што сте одвојили време да уредно организујете свој код ако икада будете морали да се вратите кроз њега.
Код користи главну ИНО датотеку да формира основу нашег пројекта. Ту је и Ц++ датотека за контролу нашег екрана, Ц++ датотека за покретање главног кода игре и датотека Ардуино библиотеке која све то повезује.
У наставку ћемо дубље заронити у овај код, али вас подстичемо да погледате коментарисани код у нашем Пројекат Ардуино ручне игре на ГитХуб-у. Помоћи ће вам да га позовете уз овај чланак.
Датотека библиотеке (либрари.х)
Наша датотека библиотеке има кључну улогу, повезујући наше друге пројектне датотеке заједно тако да могу да раде као једна апликација. Ова датотека садржи декларације за укључивање Ардуино.х библиотеке и свих функција унутар нашег кода игре које треба да раде између наших датотека. Без овога, наш код једноставно не би функционисао.
Главна ИНО датотека (маин.ино)
Као и многи Ардуино пројекти, и овај је започео са подразумеваним шаблоном који обезбеђује Ардуино ИДЕ. Тај шаблон то даје подесити и петља функције које користимо за позивање функција у нашим другим датотекама. Ова датотека такође има декларацију да укључује датотеку либрари.х.
Функција подешавања је идеална за иницијализацију нашег екрана и дугмади, јер се покреће само једном када се Ардуино ресетује или укључи. За ово позивамо функцију дисСетуп() у нашој датотеци за приказ и бутСетуп() функцију у нашој датотеци игре.
Наша функција лооп() је чак једноставнија од функције сетуп(), са само једним позивом функције гамеСтате() која се налази у нашој датотеци игре. Ово ћемо детаљније истражити касније у чланку.
Датотека кода приказа (дисплаи.цпп)
За овај пројекат користимо ССД1306 ОЛЕД екран, мада можете користити другачији тип екрана ако у складу с тим уредите код. Ова датотека почиње укључивањем датотеке библиотеке, библиотека.ч. Затим укључује декларације за библиотеке СПИ, Вире, Адафруит_ГКС и Адафруит_ССД1306. Након тога, дефинише неке константе које ће обезбедити подешавања за екран.
Прва функција, дисСетуп, покреће екран и приказује почетни екран логотипа. Затим брише екран након чекања отприлике 2 секунде. Наш главни фајл, маин.ино, позива дисСетуп у свом подесити функција.
Остале функције у овој датотеци, осим тимерБар(), формирају различите екране који се виде током игре. Фајл игре, гаме.цпп, позива сваку од ових функција.
- стартГаме(): Ова функција контролише први екран који играч види. Једноставно пита да ли су спремни док позивају свитцхИнстанце функција пронађена у датотеци игре.
- стартингГаме(): Када играч започне игру, овај екран приказује кратко одбројавање. Затим мења стање игре како би одговарало.
- инГаме(): Ово је најкомплекснија од наших функција приказа, која користи три варијабле за учитавање сваке рунде игре. Почиње са иф наредбом која одређује коју од три плочице треба попунити, а затим приказује плочице и ниво и резултат играча.
- тимерБар(): Ова функција користи променљиву за приказ траке тајмера на дну екрана. Показује играчу колико времена има за сваку рунду.
- суццессСцреен(): Ово је једноставна функција која приказује поруку сваки пут када играч успешно заврши рунду.
- ендГаме(): Ова коначна функција приказује игру преко екрана са резултатом играча и опцијом да поново започне игру.
Датотека кода игре (гаме.цпп)
Коначно, као последња датотека коју треба истражити, време је да погледате код игре. Ова датотека, као и остали, почиње укључивањем датотеке либрари.х. Такође садржи дугачку листу различитих целобројних варијабли које користимо током игре.
Наћи ћете функцију бутСетуп() пре свега. Функција сетуп() у нашој главној датотеци позива бутСетуп. Ова функција користи променљиве за подешавање наших дугмади као улаза које можемо читати касније.
- свитцхИнстанце(): Ова функција пребацује између инстанци игре, са почетног екрана на екран игре и игре преко екрана. Прима променљиву која му говори у које стање игре да се пребаци. Наредба иф чека да се притисне дугме да би покренула игру из стања стартГаме(). Друга иф изјава поново покреће игру из стања ендГаме().
- гамеСтате(): Ова функција поставља тежину игре на основу резултата играча и позива праву функцију у зависности од стања игре. Почиње серијом иф наредби које постављају варијабле на основу резултата играча, а затим следе више иф изјава за проверу тренутне инстанце.
- тилеСелецтор(): Ова функција генерише насумични број између 0 и 2 који говори игри коју од три плочице да попуни у било ком тренутку.
- тхеГаме(): Ова функција је вероватно најважнија од свих. То зове тилеСелецтор и у игри функције, бирање нове плочице и приказивање на екрану. Након овога, наћи ћете фор петљу која служи као тајмер за сваку рунду. Садржи скуп иф наредби које преузимају притисак на дугме и одређују да ли су тачне.
Прављење сопствене ручне Ардуино игре
Овај чланак је пратилац кода пројекта који се налази на ГитХуб-у. Више информација о одређеним линијама кода које смо користили можете пронаћи у коментарима у тим датотекама. Али такође сте добродошли да га једноставно учитате на свој Ардуино и уживате у забави.
Креативност је кључна у свету развоја игара и ми вас охрабрујемо да радите на сопственим идејама за игру поред ове.
10 најбољих Ардуино радио пројеката
Реад Нект
Повезане теме
- Програмирање
- ДИИ
- Идеје за ДИИ пројекте
- Упутства за „уради сам“ пројекат
- Ардуино
- Програмирање
О аутору

Семјуел је писац технологије са седиштем у Великој Британији са страшћу за све ствари „уради сам“. Након што је започео послове у области веб развоја и 3Д штампања, уз дугогодишњи рад као писац, Самуел нуди јединствен увид у свет технологије. Фокусирајући се углавном на „уради сам“ техничке пројекте, он не воли ништа више од дељења забавних и узбудљивих идеја које можете испробати код куће. Изван посла, Семјуела се обично може наћи како вози бицикл, игра видео игрице на рачунару или очајнички покушава да комуницира са својим кућним љубимцем раком.
Претплатите се на наш билтен
Придружите се нашем билтену за техничке савете, рецензије, бесплатне е-књиге и ексклузивне понуде!
Кликните овде да бисте се претплатили