34.05M
Category: sportsport

Шахматы против нейросети

1.

Шахматы
против
нейросети
Федотов Арсений

2.

О программе
Мой финальный проект — это шахматы против
нейросети.
Основная цель проекта — создать полноценную
шахматную игру с возможностью игры против
искусственного интеллекта. Проект написан на языке
Python и состоит из 1200 строк кода, разделённых на 9
файлов. Я потратил 2 недели на разработку
функциональной части и ещё неделю на внесение
мелких корректировок и улучшений.
Для визуального оформления игры я использовал
цветовую гамму, из популярной платформой chess.com.
Игра позволяет выбирать сторону (играть за белых или
чёрных), а также демонстрирует способность нейросети
делать осмысленные ходы, анализируя текущую позицию
на доске.

3.

Технологии и структура проекта
Для реализации проекта я использовал
несколько библиотек, которые помогли
создать как графическую часть, так и логику
игры. Используемые библиотеки: tkinter, PIL,
subprocess, sys, os, random, pygame, ttk.
Структура проекта:
1. game.py — логика игры, обработка ходов,
проверка правил.
2. figures.py — описание шахматных фигур и
их движений.
3. params.py — параметры и настройки
игры.
4. ai.py — алгоритм нейросети, отвечающий
за ходы ИИ.
5. boards.py — управление отображением
шахматной доски и позиций.
6. start_black.pyw / start_white.pyw —
файлы для запуска игры за чёрных или белых.
7. main.py — основной файл для
координации всех модулей и запуска игры.
8. __init__.py — файл инициализации для
корректной работы проекта как пакета.

4.

Основное окно программы
Главное окно игры выполнено с
использованием tkinter и имеет
минималистичный стиль в цветовой
гамме chess.com. В центре экрана
отображается большая шахматная
доска, а справа — панель управления.
Пользователь выбирает цвет своей
стороны через кнопки Play for White
и Play for Black с иконками пешек.
Таймер автоматически запускается
при начале игры и отображает время
партии. Снизу находится ползунок для
выбора уровня сложности ИИ (Easy,
Medium, Hard). В верхнем углу —
кнопка выхода с динамическим
изменением цвета при наведении.
Интерфейс сопровождается
анимацией и плавными переходами
для лучшей визуализации.

5.

Подробности о нейросети (ai.py)
ИИ в моей программе
использует алгоритм, основанный
на Minimax, для выбора
оптимальных ходов. На первом
ходу бот делает случайный выбор,
чтобы добавить вариативность.
Далее ИИ оценивает возможные
ходы, применяя рекурсивную
проверку на 2 хода вперёд.
Оценка позиции проводится через
функцию position_evaluation,
которая учитывает текущую
расстановку фигур на доске.
Алгоритм выбирает ход с
максимальной оценкой для своей
стороны и минимальной для
противника, что позволяет ИИ
действовать стратегически.
Программа обрабатывает случаи
превращения пешек в ферзей и
корректно реагирует на шах и мат.

6.

Положение фигуры и ходы
Сначала она применяет детектор
фигур YOLO для распознавания типов
и позиций фигур на доске.
Распознанные координаты
трансформируются в шахматные
клетки с помощью заранее
определенной сетки. Для
определения возможных ходов
программа использует библиотеку
python-chess, анализируя текущую
позицию доски и правила движений
для каждой фигуры. Шах и мат
определяются функциями is_check() и
is_checkmate(), которые проверяют
угрозу королю и возможность
избежать поражения. Программа
сравнивает текущие позиции фигур и
возможные ходы противника для
выявления шаха. Если у короля нет
легальных ходов, программа
фиксирует мат. Все данные
обновляются в реальном времени для
точного отображения хода игры.

7.

Вывод
В этом проекте я создал
программу, которая распознает
шахматные фигуры на доске и
играет против человека с
помощью нейросети. Были
трудности с точным
определением позиций фигур, но
я их решил с помощью настройки
координат и фильтрации
изображения. Теперь программа
стабильно работает и предлагает
ходы, как настоящий соперник.
English     Русский Rules