Arduino Mega 2560 и его клоны по тактовой частоте и объёму ПЗУ (но не ОЗУ) превосходят домашние компьютеры восьмидесятых. А значит, их ресурсов достаточно для реализации шахматных программ. Автор Arduino Project Hub под ником Sergey_Urusov рассказывает об одной из них. Лицензия - GPL версии 3 или больше по вашему выбору.
Разработка рассчитана на применение TFT-дисплея с резистивным сенсором компании Mcufriend (разрешение 320x480) или Adafruit (разрешение 240x320). Оба вида дисплеев просто подключаются к Arduino как шилды. Соответственно, необходимо скачать библиотеку UTFTGLUE.h или Adafruit_TFTLCD.h и внести в файл gui.h следующие правки:
1. Выбрать, какую из следующих строк оставить раскомментированной:
#define mcufriend480
#define adafruit320
Тогда при компиляции автоматически выберется одна из подключаемых библиотек:
#include <UTFTGLUE.h>
либо
#include <Adafruit_TFTLCD.h>
Можно скорректировать калиборовочные константы для резистивного сенсора:
#define mapx1 980
#define mapx2 110
#define mapy1 145
#define mapy2 902
Если реакции на нажатия нет, нужно открыть инструкцию на дисплей и посмотреть, к каким выводам шилда подключён сенсор. При необходимости поправить:
int XP = 6, YP = A1, XM = A2, YM = 7;
Звукоизлучатель подключён так:
Файлы: скетч, библиотеки: 1, 2, 3.
Программе присвоен следующий рейтинг Эло:
Скриншот сразу после запуска, можно играть или войти в меню. Квадрат рядом с кнопкой Menu показывает, каким цветом играет Arduino, круг рядом с кнопкой Start - чей сейчас ход.
Так выглядит меню:
Можно выйти из меню, вернуться на один ход, задать максимальную продолжительность расчёта хода компьютером, начать новую игру, задать, каким цветом играет человек, а каким компьютер, также можно заставить устройство играть само с собой, либо воспользоваться им в качестве электронной шахматной доски для двух человек (эти режимы есть и во многих других шахматных программах), развернуть доску, сохранить или загрузить игру.
Через монитор последовательного порта можно загрузить в устройство готовую позицию в нотации Форсайта — Эдвардса, а также командой time задать максимальную продолжительность автоматического расчёта в секундах, командой stop - прекратить расчёт и сделать такой ход, который программа успела рассчитать. Введя число от 1 до 300, можно автоматически загрузить одну из 300 Win at chess-позиций.
Способ изготовления корпуса произвольный, мастер воспользовался 3D-печатью.
Источник (Source)
Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.