Оглавление:

Игра Arduino Battleship: 3 шага
Игра Arduino Battleship: 3 шага

Видео: Игра Arduino Battleship: 3 шага

Видео: Игра Arduino Battleship: 3 шага
Видео: 11 Игр в Которых Началась Третья Мировая Война 2024, Июль
Anonim
Ардуино Морской бой
Ардуино Морской бой

Я помню, как в детстве играл в «Морской бой» в бумажную и карандашную версию. Фактически, это было примерно со времен Первой мировой войны. У меня также был «электронный» вариант в начале 1960-х годов под названием «Sonar Sub Hunt», в котором были огни, звуки и скрытые мины. По сегодняшним стандартам видеоигр «Морской бой» довольно скучный, но я подумал, что все равно сделаю его, просто чтобы посмотреть, что думают о нем внуки. Ведь иногда ретро бывает круто.

В этом проекте есть фрагменты, которые могут пригодиться в другом месте, даже если вы не заинтересованы в создании игры «Морской бой». Он имеет простой 4-битный ЖК-интерфейс 1602, который включает в себя процедуру для установки определенного местоположения символа. Также есть интерфейс для декодирования коммутационной матрицы 4х4. Эти два интерфейса доступны в виде отдельных включаемых файлов, поэтому их легко переносить. В игре также есть различные программы звуковых эффектов и простая схема усилителя звука на одном транзисторе.

Шаг 1. Аппаратное обеспечение

Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение
Аппаратное обеспечение

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

Классическая игра была представлена в виде матрицы, но я решил сделать простую реализацию, используя ЖК-дисплей 1602 в качестве дисплея. Первая строка показывает расположение кораблей игрока и выстрелы противника. Вторая строка показывает выстрелы игрока и любые попадания в корабли противника. Это дает 16 возможных мест для кораблей. Количество кораблей задается в программном обеспечении, и я произвольно выбрал 5.

16 мест на корабле прекрасно соответствуют требованиям к переключателям, поскольку позволяют использовать матрицу 4x4. Доступны матричные переключатели 4x4, но я решил использовать отдельные переключатели в одной строке, чтобы соответствовать линейному дисплею. Тем не менее, я подключил переключатели как матрицу 4x4, так что потребовалось всего восемь контактов Arduino. См. Электрическую схему переключателя и схему для правильного подключения.

ЖК-дисплей подключен к 4-битному интерфейсу. Я также добавил внешний светодиод на контакт D13, чтобы указать, какой игрок должен делать выстрел. Первоначально игроки решают, кто сделает первый выстрел, а затем программа автоматически контролирует ход игры.

Я хотел добавить простые звуковые эффекты для выстрела, взрывов, готовой игры и победителя / проигравшего. Я попробовал использовать простой пьезо-зуммер, но вместо этого остановился на небольшом динамике. Ток, требуемый динамиком, превышает то, с чем может справиться Arduino, поэтому был добавлен простой транзисторный усилитель. Звук по-прежнему невысокий, но лучше, чем с зуммером. У меня динамик 4 Ом, но если у вас 8-омный, измените резистор на схеме с 39 Ом на 33 Ом. Если вы используете пьезо-зуммер, вы сможете управлять им напрямую от вывода Arduino, а другая сторона зуммера будет подключена к земле.

Также имеется внешний переключатель сброса, который подключается непосредственно между землей и выводом «сброса» на Arduino. Это дает возможность перезапустить игру.

Шаг 2: Программное обеспечение

В программном обеспечении есть включаемый файл для моего ЖК-интерфейса, и я также создал включаемый файл для сканирования матрицы переключателей 4x4. Инициализация предлагает игроку выбрать места для своих кораблей, а затем переходит в состояние «Готов». Когда оба игрока готовы, один из них начинает игру, нажав переключатель.

Местоположение выстрела передается через UART другому игроку, а соответствующий результат передается обратно игроку, который произвел выстрел. Как упоминалось ранее, после того, как сделан первый снимок, программное обеспечение определяет, кто сделает следующий снимок. Перед передачей кадра он сравнивается с местоположениями предыдущих кадров. Если это место уже было использовано, выстрел не будет передан. Светодиод «My_Shot» определяет, чья это очередь. Также есть звук выстрела, генерируемый для правильного выбора, и звук взрыва, если корабль поражен. Звуковые эффекты взяты из примеров, найденных в Интернете, с модификациями, соответствующими игре.

После того, как все корабли противника будут поражены, на каждом ЖК-дисплее отображается сообщение: одно - победитель, а другой - проигравший. В сообщении также указано, что игру можно перезапустить, нажав кнопку сброса. Также есть отдельные звуковые эффекты для победителя и проигравшего.

Шаг 3. Снимки экрана

Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана
Снимки экрана

Вот несколько скриншотов из игры. Это все для этого поста. Ознакомьтесь с другими моими инструкциями, а также с моим сайтом: www.boomerrules.wordpress.com

Рекомендуемые: