Да се ​​научиш как да пишеш код може да бъде дълго пътуване. Не само трябва да намерите ресурси, които да ви помогнат да научите, но също така трябва да намерите вълнуващи идеи за проекти, които поддържат вашето образование в правилния път.

Видеоигрите предоставят чудесна възможност да програмирате нещо, на което можете да се насладите. Освен това те могат да ви научат на основите, от които се нуждаете, за да бъдете добър програмист. Тази статия разглежда DIY ръчен проект за видеоигра Arduino, за да започнете.

Какво правим и защо?

Преди да се потопите в частта с ръководството на тази статия, има смисъл да проучим какво правим и защо сме го избрали за този проект. Няколко предизвикателства идват с правенето на игри за устройства като Arduinos.

  • Място за съхранение: Повечето Arduino платки идват с много малко RAM или флаш памет. Това не само поставя ограничение на количеството код, който могат да изпълняват, но също така представлява предизвикателства, когато става въпрос за работа с променливи.
  • instagram viewer
  • Процесорна мощност: Arduino, който използвахме, има процесор с ниска мощност, така че е невъзможно да се създават жадни за ресурси приложения за него.
  • Ограничени компоненти: Arduinos имат много налични щифтове, но много компоненти се нуждаят от повече от един. Това ни ограничава, когато става въпрос за контроли и изходи на дисплея.

Имайки предвид тези предизвикателства, решихме да създадем ръчно устройство, което изпълнява много проста игра, базирана на реакции. Можете лесно да правите други игри за хардуера, с който работим, и ви насърчаваме да бъдете креативни.

Самата игра е много проста. На екрана се появяват три блока, два очертани и един запълнен, всеки със съответен физически бутон отдолу. Играчът трябва да натиска десния бутон всеки рунд, за да продължи да играе, и ако натисне грешен бутон или изтече времето, играта приключва. Всяко успешно натискане на бутон дава точки. Играта бавно повишава трудността си, като намалява наличното време за реакция.

Свързване на OLED дисплея, Arduino и бутоните

Свързването на вашата ръчна игра е първата стъпка в този процес. Както можете да видите на схемата по-горе, не е нужно да правите много връзки, за да започнете, и дори можете да използвате макет за този проект.

Вече публикувахме ръководство, което да ви помогне жични бутони към Arduino. Нашите Проект Arduino Aquarium Monitor ви показва как да използвате OLED дисплей с микроконтролер като този. Като такива, ние ще се съсредоточим върху кода за този проект до края на тази статия.

Код за ръчна игра Arduino

Правилното форматиране и подредените файлови структури са много важни както за начинаещи, така и за ветерани програмисти. Ще благодарите на себе си, че отделихте време да организирате добре кода си, ако някога се наложи да го прегледате.

Кодът използва основен INO файл, за да формира основата на нашия проект. Има също C++ файл за управление на нашия дисплей, C++ файл за стартиране на основния код на играта и файл с библиотека на Arduino, за да свържете всичко заедно.

Ще се потопим по-задълбочено в този код по-долу, но ви насърчаваме да разгледате коментирания код в нашия Проект за ръчна игра Arduino на GitHub. Ще ви помогне да се обърнете към него заедно с тази статия.

Библиотечният файл (library.h)

Нашият библиотечен файл играе решаваща роля, свързвайки другите ни файлове на проекти заедно, така че да могат да работят като едно приложение. Този файл съдържа декларации за включване на библиотеката Arduino.h и всички функции в нашия код на играта, които трябва да работят между нашите файлове. Без това нашият код просто няма да работи.

Основният INO файл (main.ino)

Подобно на много проекти на Arduino, този стартира с шаблона по подразбиране, предоставен от Arduino IDE. Този шаблон го дава настройвам и цикъл функции, които използваме за извикване на функции в другите ни файлове. Този файл също има декларация за включването на файла library.h.

Функцията за настройка е идеална за инициализиране на нашия дисплей и бутони, тъй като работи само веднъж, когато Arduino се нулира или включи. За това ние извикваме функцията disSetup() в нашия файл за показване и функцията butSetup() в нашия игров файл.

Нашата функция loop() е дори по-проста от функцията setup(), като само с едно извикване на функцията gameState() се намира в нашия игров файл. Ще разгледаме това по-подробно по-късно в статията.

Файлът с код на дисплея (display.cpp)

Ние използваме SSD1306 OLED дисплей за този проект, въпреки че можете да използвате различен тип дисплей, ако съответно редактирате кода. Този файл започва с включването на библиотечния файл, библиотека.ч. След това включва декларации за библиотеките SPI, Wire, Adafruit_GX и Adafruit_SSD1306. След това той дефинира някои константи за предоставяне на настройки за дисплея.

Първата функция, disSetup, инициализира дисплея и показва начален екран с лого. След това изчиства дисплея след около 2 секунди. Нашият основен файл, main.ino, извиква disSetup в своя настройвам функция.

Останалите функции в този файл, с изключение на timerBar(), формират различните екрани, които се виждат по време на играта. Файлът на играта, game.cpp, извиква всяка от тези функции.

  • startGame(): Тази функция контролира първия екран, който играчът вижда. Той просто пита дали са готови, докато се обажда switchInstance функция, намерена във файла на играта.
  • startingGame(): След като играчът започне играта, този екран показва кратко обратно отброяване. След това променя състоянието на играта, за да съответства.
  • inGame(): Това е най-сложната от нашите функции за показване, използвайки три променливи за зареждане на всеки рунд на играта. Започва с оператор if, който определя коя от трите плочки да се попълни, последвано от показване на плочките и нивото и резултата на играча.
  • timerBar(): Тази функция използва променлива за показване на лента с таймер в долната част на екрана. Показва на играча колко време има за всеки рунд.
  • successScreen(): Това е проста функция, която показва съобщение всеки път, когато играчът завърши успешно рунд.
  • endGame(): Тази последна функция показва игра върху екрана с резултата на играча и опцията за стартиране на играта отново.

Файлът с кода на играта (game.cpp)

И накрая, като последен файл за изследване, е време да разгледаме кода на играта. Този файл, както и останалите, започва с включването на файла library.h. Той също така съдържа дълъг списък от различни целочислени променливи, които използваме по време на играта.

Преди всичко друго ще намерите функцията butSetup(). Функцията setup() в нашия основен файл извиква butSetup. Тази функция използва променливи, за да настрои нашите бутони като входни данни, които можем да четем по-късно.

  • switchInstance(): Тази функция превключва между екземпляри на играта, от началния екран към играта и над екраните на играта. Той получава променлива, която да му каже към кое състояние на играта да премине. Инструкция if чака натискане на бутон, за да стартира играта от състоянието startGame(). Друг оператор if стартира играта отново от състоянието endGame().
  • gameState(): Тази функция задава трудността на играта въз основа на резултата на играча и извиква правилната функция в зависимост от състоянието на играта. Започва с поредица от if оператори, които задават променливи въз основа на резултата на играча, последвани от още if оператори за проверка на текущия екземпляр.
  • tileSelector(): Тази функция генерира произволно число между 0 и 2, което казва на играта коя от трите плочки да попълни в даден момент.
  • theGame(): Тази функция е може би най-важната от всички. То нарича tileSelector и в игра функции, избиране на нова плочка и показването й на екрана. След това ще намерите for цикъл, който действа като таймер за всеки рунд. Той съдържа набор от оператори if, които улавят натискането на бутони и определят дали са правилни.

Създаване на своя собствена ръчна Arduino игра

Тази статия е придружител на кода на проекта, намерен в GitHub. Можете да намерите повече информация за конкретните редове код, които сме използвали в коментарите в тези файлове. Но вие също сте добре дошли да го заредите на вашия Arduino и да се насладите на забавлението.

Креативността е от ключово значение в света на разработването на игри и ние ви насърчаваме да работите върху собствените си идеи за игри заедно с тази.

10-те най-добри проекта за радио Arduino

Прочетете Следващото

ДялтуитДялелектронна поща

Свързани теми

  • Програмиране
  • Направи си сам
  • Идеи за проекти „Направи си сам“.
  • Уроци за проекти „Направи си сам“.
  • Arduino
  • Програмиране

За автора

Самюел Л. Гарбет (публикувани 41 статии)

Самуел е базиран в Обединеното кралство технологичен писател със страст към всичко, което си направи сам. След като стартира бизнес в областта на уеб разработката и 3D печата, заедно с работата си като писател в продължение на много години, Самуел предлага уникален поглед към света на технологиите. Фокусирайки се главно върху технологични проекти „Направи си сам“, той не обича нищо повече от споделянето на забавни и вълнуващи идеи, които можете да опитате у дома. Извън работа Самуел обикновено може да бъде намерен да кара колоездене, да играе компютърни видеоигри или отчаяно да се опитва да общува със своя домашен рак.

Още от Samuel L. Гарбет

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, ревюта, безплатни електронни книги и ексклузивни оферти!

Щракнете тук, за да се абонирате