Съдържание:

Игра на бойния кораб Arduino: 3 стъпки
Игра на бойния кораб Arduino: 3 стъпки

Видео: Игра на бойния кораб Arduino: 3 стъпки

Видео: Игра на бойния кораб Arduino: 3 стъпки
Видео: Build a Boat Атака на БИСМАРК 🚢 Roblox 2024, Ноември
Anonim
Игра на бойния кораб Arduino
Игра на бойния кораб Arduino

Спомням си, че като дете играех хартиена и молива версия на Battleship Game. Всъщност той съществува от времето на Първата световна война. Имах и „електронен“вариант в началото на 60 -те, наречен „Sonar Sub Hunt“, който имаше светлини и звуци и скрити мини. Според днешните стандарти за видеоигри Battleship е доста скучен, но все пак мислех, че ще го направя, само за да видя какво мислят внуците за него. В края на краищата понякога ретро може да е готино.

Има частици от този проект, които биха били полезни другаде, дори ако не се интересувате от създаването на играта Battleship. Той има прост 4-битов 1602 LCD интерфейс, който включва рутина за задаване на определено местоположение на знаците. Има и интерфейс за декодиране на 4x4 превключваща матрица. Тези два интерфейса се предлагат като отделни включващи файлове, така че да могат лесно да се транспортират. Играта също има различни процедури за звукови ефекти и проста схема с един транзисторен аудио усилвател.

Стъпка 1: Хардуер

Хардуер
Хардуер
Хардуер
Хардуер

Представената тук схема е за един играч, така че ще трябва да се направят две единици. Устройствата комуникират чрез 3-жичен интерфейс, който включва UART TX и RX линии и заземен проводник. Избрах да използвам стандартен 1/8 инчов жак за стерео слушалки и стандартен кабел с мъжки щепсели от двата края. RX от едната кутия отива в TX на другата кутия и обратно. Можете да направите това, като смените проводниците, запоени към жака за слушалки вътре в кутията, или ги размените на платката, когато я изграждате.

Класическата игра беше изложена като матрица, но реших да направя проста реализация, използвайки 1602 LCD за дисплея. Първият ред показва местоположението на кораба на играча и ударите на противника. Вторият ред показва ударите на играча и всички попадения по корабите на противника. Това осигурява 16 възможни места за кораби. Броят на корабите е зададен в софтуера и произволно избрах 5.

16 -те места на кораба се вписват добре с изискванията за превключване, тъй като позволяват матрица 4x4. Налични са матрични превключватели 4х4, но аз избрах да използвам отделни превключватели в един ред, за да съответства на линейния дисплей. Направих обаче превключвателите като 4x4 матрица, така че са необходими само осем Arduino щифта. Вижте електрическата схема на превключвателя и схемата за правилните връзки.

LCD дисплеят е свързан към 4-битов интерфейс. Добавих и външен светодиод на щифт D13, за да посоча кой играч трябва да направи изстрел. Първоначално играчите решават кой ще направи първия изстрел и след това софтуерът автоматично контролира напред -назад в играта.

Исках да добавя прости звукови ефекти за кадъра, експлозиите, играта готова и победителя/губещия. Опитах да използвам обикновен пиезо зумер, но вместо това получих малък говорител. Токът, необходим на високоговорителя, надвишава това, което Arduino може да обработи, така че е добавен прост транзисторен усилвател. Звукът все още не е страхотен, но е по -добър, отколкото със зумера. Моят високоговорител е 4 ома, но ако имате 8-омов, променете резистора в схемата от 39 ома на 33 ома. Ако използвате пиезо зумер, трябва да можете да го управлявате директно от щифта на Arduino с другата страна на зумера, свързан към земята.

Включен е и външен превключвател за нулиране и е свързан директно между земята и щифта за „нулиране“на Arduino. Това осигурява средства за рестартиране на играта.

Стъпка 2: Софтуер

Софтуерът има файл за включване за моя LCD интерфейс и също така създадох файл за включване за матрично сканиране с превключвател 4x4. Инициализацията подканва играча да избере местоположението за своите кораби и след това преминава в състояние „Готов“. Когато и двамата играчи са готови, един от тях започва играта с натискане на превключвател.

Мястото на изстрел се предава чрез UART на другия играч и съответният резултат се предава обратно на играча, който е изстрелял. Както бе споменато по -рано, след като е направен първият кадър, софтуерът контролира кой ще направи следващия кадър. Преди да бъде предаден изстрел, той се проверява спрямо местоположението на предишните кадри. Ако това място вече е използвано, изстрелът няма да бъде предаден. Светодиодът „My_Shot“определя чий е редът. Създава се и звук на изстрел за валиден избор и звук на експлозия, ако кораб е ударен. Звуковите ефекти са получени от примери, намерени онлайн с модификации, които отговарят на играта.

След като всички кораби на противника са били ударени, на всеки LCD се показва съобщение - един като победител и един като губещ. Съобщението също така уточнява, че играта може да бъде рестартирана чрез натискане на бутона за нулиране. Има и отделни звукови ефекти за победителя и победения.

Стъпка 3: Екранни снимки

Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана
Снимки на екрана

Ето няколко екранни снимки от играта. Това е всичко за този пост. Вижте другите ми инструктажи, а също и уебсайта ми на: www.boomerrules.wordpress.com

Препоръчано: