Целью проекта является написание программы, способной играть в шахматы на приемлемом уровне. Под приемлемым уровнем подразумевается высокая вероятность выигрыша у игроков с низким и среднем уровнем игры в шахматы.
Программа будет представлять собой некоторое вычислительное ядро(движок) осуществляющее все рассчёты, связанные с выигрышной стратегией и тактикой. Ядро будет снабжено возможностью ввода и вывода данных и "обёрнуто" в графическую оболочку, чтобы пользователь имел возможность осуществлять ход, и непосредственно выдеть ходы компьютера.
Обозначенные цель и задача формируют следующий ряд подзадач, реализация которых необходима для успешного воплощения в жизнь проекта:
- Реализация представления доски.
- Реализация вычислительного ядра.
- Реализация возможностей ввода/вывода информации.
- Реализация графической оболочки.
- Тестирование программы, устранение багов.
Также, при успешном выполнении поставленных подзадач, ставится дополнительная подзадача:
- Оптимизация вычислительного ядра.
В связи с особенностями Python доска будет реализована на основе bitset'ов. Для каждого типа фигур будет реализован свой bitboard, т.е. 64-битный набор, такой, что ноль соответствует осутствию фигуры данного типа в позиции, а единица - присутствию. Также реализуются дополнительные битборды для вычисления возможного хода и прочих внутриигровых целей.
Для успешной реализации вычислительного движка, помимо представления доски, понадобятся три обязательные функции: функция вычисления состояний доски, которые могут быть достигнуты из текущего состояния, эвристическая функция оценки хода, функция Альфа-Бета редукции, позволяющая рассматривать самые ценные ветки дерева состояния, и совершать компьютеру наиболее выгодные ходы.
Реализация функции передачи вычислительному ядру желаемого пользователем хода. После чего ядро должно оценить, удовлетворяет ли желаемый ход правилам игры, если да, то через функции вывода сообщить игроку об изменении текущего состояния доски, иначе ждать корректного хода. На вход функции будет подаваться текущая позиция и желаемая позиция.
Реализация графического представления доски и фигур, реализация канал обмена информацией между пользователем и ядром посредством удобной визуализации. Вся графическая оболочка будет реализована посредством использования средств библиотеке PyGame.
Тестирование отдельных модулей, отдельных функций, программы в целом.
Используемые средства:
- Операционная система Windows 10
- Google Colaboratory
- PyCharm 2020.2.3 x64
- Python 3.9
- Библиотека bitarray
- Библиотека PyGame