Оглавление:
- Шаг 1. Получите все детали
- Шаг 2. 2,8-дюймовый цветной сенсорный дисплей для Arduino
- Шаг 3: Создание проекта и его тестирование
- Шаг 4: алгоритм игры
- Шаг 5: Код проекта
- Шаг 6: Заключительные мысли и улучшения
Видео: Игра Arduino Touch Tic Tac Toe: 6 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:48
Дорогие друзья, добро пожаловать в очередной учебник по Arduino! В этом подробном руководстве мы собираемся создать игру Arduino Tic Tac Toe. Как видите, мы используем сенсорный экран и играем против компьютера. Такая простая игра, как Tic Tac Toe, - отличное введение в программирование игр и искусственный интеллект. Несмотря на то, что мы не будем использовать какие-либо алгоритмы искусственного интеллекта в этой игре, мы поймем, почему алгоритмы искусственного интеллекта требуются в более сложных играх.
Разработка игр для Arduino - дело непростое и требует много времени. Но мы можем создать несколько простых игр для Arduino, потому что это весело и позволит нам изучить некоторые более сложные темы программирования, такие как искусственный интеллект. Это отличный учебный опыт, и в конце у вас будет хорошая игра для детей!
Теперь приступим к созданию этого проекта.
Шаг 1. Получите все детали
Детали, необходимые для создания этого проекта, следующие:
Arduino Uno ▶
Сенсорный экран 2,8 дюйма ▶
Стоимость проекта очень низкая. Это всего 15 $
Прежде чем пытаться создать этот проект, посмотрите подготовленное мной видео о сенсорном дисплее. Я приложил его к этому руководству. Это поможет вам понять код и откалибровать сенсорный экран.
Шаг 2. 2,8-дюймовый цветной сенсорный дисплей для Arduino
Я обнаружил этот сенсорный экран на banggood.com и решил купить его, чтобы попробовать использовать его в некоторых своих проектах. Как видите, дисплей недорогой, он стоит около 11 долларов.
Получите здесь ▶
Дисплей имеет разрешение 320x240 пикселей и представляет собой экран, который делает соединение с Arduino чрезвычайно простым. Как видите, дисплей использует почти все цифровые и аналоговые контакты Arduino Uno. При использовании этого экрана у нас остается только 2 цифровых вывода и 1 аналоговый вывод для наших проектов. К счастью, дисплей отлично работает и с Arduino Mega, поэтому, когда нам нужно больше контактов, мы можем использовать Arduino Mega вместо Arduino Uno. К сожалению, этот дисплей не работает с платой Arduino Due или Wemos D1 ESP8266. Еще одним преимуществом экрана является то, что он предлагает слот для микро SD, который очень прост в использовании.
Шаг 3: Создание проекта и его тестирование
После подключения экрана к Arduino Uno мы можем загрузить код и готовы к игре.
Сначала нажимаем кнопку «Начать игру» и игра запускается. Arduino играет первой. Затем мы можем сыграть свой ход, просто прикоснувшись к экрану. Затем Arduino выполняет свой ход и так далее. Игрок, которому удастся разместить три своих метки в горизонтальном, вертикальном или диагональном ряду, выигрывает игру. Когда игра закончится, появится экран Game Over. Затем мы можем нажать кнопку воспроизведения снова, чтобы снова начать игру.
Arduino очень хорош в этой игре. Он выиграет большинство игр, или, если вы очень хороший игрок, игра закончится ничьей. Я специально разработал этот алгоритм, чтобы допускать некоторые ошибки, чтобы дать игроку-человеку шанс на победу. Добавив еще две строчки в код игры, мы можем сделать так, чтобы Arduino не проиграла игру. Но как процессор Arduino за 2 доллара может превзойти человеческий мозг? Разработанная нами программа умнее человеческого мозга?
Шаг 4: алгоритм игры
Чтобы ответить на этот вопрос, давайте посмотрим на реализованный мной алгоритм.
Компьютер всегда играет первым. Одно это решение значительно упрощает победу Arduino. Первый ход всегда угловой. Второй ход для Arduino также является случайным углом из оставшихся, не заботясь о перемещении игрока. С этого момента Arduino сначала проверяет, может ли игрок выиграть следующим ходом, и блокирует этот ход. Если игрок не может выиграть одним ходом, он выполняет угловой ход, если он доступен, или случайный из оставшихся. Вот и все, этот простой алгоритм может каждый раз побеждать игрока-человека или, в худшем случае, игра закончится ничьей. Это не лучший алгоритм игры в крестики-нолики, но один из самых простых.
Этот алгоритм можно легко реализовать в Arduino, потому что игра Tic Tac Toe очень проста, и мы можем легко ее проанализировать и решить. Если мы спроектируем дерево игры, мы сможем обнаружить некоторые выигрышные стратегии и легко реализовать их в коде, или мы можем позволить процессору вычислить дерево игры в реальном времени и самому выбрать лучший ход. Конечно, алгоритм, который мы используем в этой игре, очень прост, потому что игра очень проста. Если мы попытаемся разработать алгоритм победы в шахматах, даже если мы будем использовать самый быстрый компьютер, мы не сможем вычислить дерево игры за тысячу лет! Для подобных игр нам нужен другой подход, нам нужны алгоритмы искусственного интеллекта и, конечно же, огромная вычислительная мощность. Подробнее об этом в будущем видео.
Шаг 5: Код проекта
Взглянем на код проекта. Для компиляции кода нам нужны три библиотеки.
- Adafruit TFTLCD:
- Adafruit GFX:
- Сенсорный экран:
Как видите, даже такая простая игра требует более 600 строк кода. Код сложный, поэтому я не буду пытаться объяснять его в коротком руководстве. Я покажу вам реализацию алгоритма движений Arduino.
Сначала мы играем два случайных угла.
<int firstMoves = {0, 2, 6, 8}; // сначала будут использовать эти позиции для (counter = 0; counter <4; counter ++) // Подсчитайте первые сыгранные ходы {if (board [firstMoves [counter]! = 0) // Кто-то сделал первый ход {movePlayed ++; }} делать {если (перемещает <= 2) {int randomMove = random (4); int c = firstMoves [randomMove]; если (доска [c] == 0) {задержка (1000); доска [c] = 2; Serial.print (firstMoves [randomMove]); Serial.println (); drawCpuMove (firstMoves [randomMove]); b = 1; }}
Далее в каждом раунде мы проверяем, сможет ли игрок выиграть следующим ходом.
интервал checkOpponent ()
{if (board [0] == 1 && board [1] == 1 && board [2] == 0) return 2; иначе, если (доска [0] == 1 && доска [1] == 0 && доска [2] == 1) return 1; иначе, если (доска [1] == 1 && доска [2] == 1 && доска [0] == 0) return 0; иначе, если (доска [3] == 1 && доска [4] == 1 && доска [5] == 0) return 5; иначе, если (доска [4] == 1 && доска [5] == 1 && доска [3] == 0) return 3; иначе, если (доска [3] == 1 && доска [4] == 0 && доска [5] == 1) return 4; иначе, если (доска [1] == 0 && доска [4] == 1 && доска [7] == 1) return 1; иначе верните 100; }
Если да, мы блокируем этот ход в большинстве случаев. Мы не блокируем все ходы, чтобы дать игроку-человеку шанс на победу. Вы можете найти, какие ходы не заблокированы? После блокировки хода мы играем в оставшийся угол или случайный ход. Вы можете изучить код и легко реализовать свой собственный непревзойденный алгоритм. Как всегда, вы можете найти код проекта в этой инструкции.
ПРИМЕЧАНИЕ. Поскольку Banggood предлагает один и тот же дисплей с двумя разными драйверами дисплея, если приведенный выше код не работает, измените функцию initDisplay на следующее:
void initDisplay ()
{tft.reset (); tft.begin (0x9341); tft.setRotation (3); }
Шаг 6: Заключительные мысли и улучшения
Как видите, даже с Arduino Uno мы можем создать непревзойденный алгоритм для простых игр. Этот проект великолепен, потому что его легко построить, и в то же время он является отличным введением в искусственный интеллект и программирование игр. В будущем я постараюсь создать еще несколько продвинутых проектов с использованием искусственного интеллекта, используя более мощный Raspberry Pi, так что следите за обновлениями! Хотелось бы услышать ваше мнение об этом проекте.
Пожалуйста, разместите свои комментарии ниже и не забудьте поставить лайк инструкциям, если вы сочтете интересным. Спасибо!
Рекомендуемые:
Игра Python Tic Tac Toe: 4 шага
Игра Python Tic Tac Toe: игра Python Tic Tac Toe Эта игра сделана на Python, который является компьютерным языком, я использовал редактор Python под названием: pycharm, вы также можете использовать обычный редактор кода Python
Игра DIY Arduino Tic Toc Toe: 6 шагов (с изображениями)
Игра DIY Arduino Tic Toc Toe: Игра Tic Tac Toe - это классическая игра для двух игроков. Это становится весело, когда вы играете в нее со своими детьми, семьей и друзьями. Здесь я показал, как создать игру в крестики-нолики, используя Arduino Uno, кнопки и пиксельные светодиоды. Этот Arduino основан на 4 на 4 крестики-нолики
Игра Microbit Tic Tac Toe: 4 шага (с изображениями)
Игра Microbit Tic Tac Toe: для этого проекта мой коллега - @descartez и я создали потрясающую игру в крестики-нолики, используя радиофункциональность микробитов. Если вы раньше не слышали о микробитах, это отличный микроконтроллер, предназначенный для обучения детей программированию. Они
GPIO Tic Tac Toe: 5 шагов
GPIO Tic Tac Toe: Probablemente, para el hablar latinoamericano el pronunciar el nombre de este sencillo pero muy Popular juego puede resultar bastante confuso, esto debido a la gran cantidad de nombres que se le atribuyen a este, entre los cuales el cabe: Гато
Arduino и сенсорная панель Tic Tac Toe: 8 шагов (с изображениями)
Arduino и сенсорная панель Tic Tac Toe: Или упражнение по мультиплексированию ввода и вывода и работе с битами. И заявка на конкурс Arduino. Это реализация игры в крестики-нолики с использованием массива двухцветных светодиодов 3x3 для дисплея, простого резистивного тачпада