Skip to content

Latest commit

 

History

38 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ChessAI

Настольный шахматный анализатор, тренер и PGN-инструментарий на базе Stockfish

Python Stockfish Desktop UI Platforms License

Загрузите партию, найдите ошибки, изучите варианты движка и превратите слабые ходы в тренировочные позиции — в одном локальном приложении.

Быстрый старт · Возможности · Горячие клавиши · Stockfish


Интерфейс

На macOS ChessAI использует системную тему Aqua, шрифты, цвета и контролы. На новых версиях macOS приложение автоматически получает актуальное системное оформление, включая Liquid Glass, без рисованной имитации blur-эффектов.

Возможности

Анализ

  • Быстрый анализ текущей позиции через Stockfish.
  • Несколько лучших линий движка (MultiPV) с оценкой и стрелками на доске.
  • Полный разбор партии: точность по модели вероятности победы, ACPL, зевки, ошибки и переломный момент.
  • Точность считается по win%-кривой (как на Lichess), а не по линейной формуле, поэтому цифры сопоставимы с другими анализаторами.
  • Определение дебюта и построение интерактивного графика оценки.
  • Клик по графику мгновенно переносит к соответствующему полуходу.
  • Пакетный анализ всех партий из одного PGN-файла.
  • Отмена полного и пакетного анализа в любой момент: разбор останавливается после текущего хода.
  • Разбор партии делает один поиск на ход (MultiPV=2) вместо двух: быстрее и точнее.

Импорт и экспорт

  • Локальные PGN-файлы, включая файлы с несколькими партиями.
  • PGN, FEN или URL прямо из буфера обмена.
  • Партии по ссылкам Lichess и Chess.com, а также прямые ссылки на .pgn.
  • Сохранение аннотированного PGN и копирование PGN/FEN.

Тренировка

  • Игра против Stockfish с настраиваемой силой: Skill Level (0-20) или ограничение по UCI_Elo (1320-3190).
  • Задача «найди лучший ход» для текущей позиции.
  • Автоматическая генерация тренировочных задач из ошибок партии.
  • Режим тренера с контекстными подсказками.

Работа с партией

  • Поиск по ходам, номерам, комментариям и аннотациям.
  • NAG-метки (!, ?, !!, ??, !?, ?!) и текстовые комментарии.
  • Редактор позиции: расстановка фигур мышью, выбор стороны хода и прав на рокировку.
  • Добавление вариантов из анализа, перенос варианта в главную линию и удаление веток.
  • Переключаемые координаты, звуки, анимация и режим «только доска».
  • Изменяемая по ширине боковая панель: перетаскивается сама непрерывная серая граница.
  • Все настройки (сила, время, Elo, панель, звук, геометрия окна) сохраняются между запусками в ~/.chessai/settings.json.

Анимации и обратная связь

  • Динамическая стрелка при перетаскивании. Пока фигура «висит» на курсоре, от исходной клетки к ней тянется стрелка. Цель подсвечивается рамкой: зелёная — обычный ход, красная — взятие, серая — ход невозможен. Острие мягко притягивается к центру легальной клетки, так что ход «залипает» ещё до отпускания мыши.
  • Стрелка-подсказка при выборе кликом. После клика по фигуре стрелка от неё к курсору сразу показывает, куда ведёт текущая позиция мыши.
  • Стрелки идут от фигуры к фигуре. Хвост стрелки начинается в центре исходной фигуры, острие — в центре целевой клетки, поэтому подсказка буквально «растёт» из фигуры, а не висит рядом с ней.
  • Стрелки анализа рисуются на глазах: линия с треугольной головкой вырастает от исходной клетки к целевой за ~170 мс по easing-кривой.
  • Лучший ход и угроза «дышат» — толщина и яркость плавно колеблются, поэтому главные подсказки легко отличить от прочих вариантов.
  • Плавный перелёт фигуры с easing; конь дополнительно скачет по дуге.
  • Пульс выделения выбранной клетки и мягкая подсветка клетки под курсором.
  • Шкала оценки переезжает к новому значению постепенно, а не прыгает; число оценки растёт/падает синхронно с полосой.
  • Все эффекты можно выключить: Вид → Анимация ходов и Вид → Анимация стрелок и подсветки.

Быстрый старт

1. Клонируйте репозиторий

git clone https://github.com/ReNothingg/ChessAI.git
cd ChessAI

2. Создайте виртуальное окружение

macOS / Linux
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -r requirements.txt
Windows PowerShell
py -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install -r requirements.txt

3. Запустите ChessAI

python main.py

Tip

На Windows бинарник stockfish.exe уже находится в репозитории. На macOS и Linux ChessAI также ищет stockfish в PATH и стандартных каталогах установки.

Требования

Компонент Требование
Python 3.9+
GUI tkinter
Движок Stockfish
ОС macOS, Windows или Linux

Если Stockfish не найден, интерфейс всё равно запустится. Функции движка, полного анализа и тренировок будут отключены до настройки пути.

Состояние движка видно в статусной строке. Если процесс Stockfish завершился во время работы, приложение сообщит об этом, а вернуть движок в строй можно командой «Игра → Переподключить движок» — перезапускать ChessAI не нужно.

Движок запускается с Threads=4 и Hash=256 МБ — полный разбор партии идёт заметно быстрее, чем на одном потоке с дефолтным хешем.

Настройка Stockfish

ChessAI ищет движок в следующем порядке:

  1. путь из переменной окружения STOCKFISH_PATH;
  2. stockfish.exe в корне проекта на Windows;
  3. stockfish в корне проекта или в PATH на macOS/Linux;
  4. стандартные каталоги Homebrew и MacPorts на macOS.
Указать путь вручную

macOS / Linux:

export STOCKFISH_PATH=/path/to/stockfish
python main.py

Windows PowerShell:

$env:STOCKFISH_PATH = "C:\path\to\stockfish.exe"
python main.py

Типичный сценарий

  1. Откройте PGN, вставьте FEN или загрузите партию по URL.
  2. Перемещайтесь по партии клавишами ← и → или через список ходов.
  3. Нажмите «Анализ позиции», чтобы увидеть лучшие продолжения.
  4. Запустите полный анализ для расчёта точности, ACPL и ключевых ошибок.
  5. Изучите отчёт и кликабельный график оценки.
  6. Создайте тренировочную сессию из найденных ошибок.

Горячие клавиши

Клавиши Действие
← / → Предыдущий / следующий ход
Home / End Начало / конец партии
A Анализ текущей позиции
T Показать угрозу
P Задача «найди лучший ход»
F Перевернуть доску
Space Режим «только доска»
Ctrl/Cmd + O Открыть PGN
Ctrl/Cmd + F Поиск по ходам
Ctrl/Cmd + B Показать / скрыть боковую панель
H Справка

Двойной клик по строке в блоке «Лучшие ходы» добавляет продолжение как вариант.

Структура проекта

ChessAI/
├── app/
│   ├── app.py              # состояние приложения и запуск компонентов
│   ├── ui.py               # нативный интерфейс и отрисовка доски
│   ├── game.py             # PGN/FEN, навигация и игровой поток
│   ├── analysis.py         # анализ Stockfish и тренировки
│   ├── interaction.py      # мышь, клавиатура и варианты
│   ├── animations.py       # планировщик кадров, easing и геометрия стрелок
│   ├── board_editor.py     # редактор позиции
│   ├── openings.py         # справочник дебютов с транспозициями
│   └── reporting.py        # отчёты и тренировочные позиции
├── assets/                 # доска, фигуры, звуки, иконка приложения
├── engine_handler.py       # управление процессом Stockfish
├── config.py               # настройки и пути
├── main.py                 # точка входа
└── requirements.txt

Технологии

Технология Назначение
python-chess правила шахмат, PGN и FEN
Stockfish анализ позиций
tkinter / ttk нативный desktop UI
matplotlib график оценки
Pillow изображения доски и фигур
requests загрузка партий по URL
pygame звуки ходов

Решение проблем

Stockfish не найден

Проверьте, что бинарник существует, имеет право на запуск и путь к нему указан в STOCKFISH_PATH. На macOS/Linux можно проверить командой stockfish в терминале.

Нет звука

Приложение продолжит работать без аудио. Проверьте установленный pygame и доступность звукового устройства, затем перезапустите ChessAI.

Не запускается tkinter

Убедитесь, что используемая сборка Python включает Tcl/Tk. Это особенно важно для минимальных Linux-установок.

Участие в разработке

Issues и pull request'ы приветствуются. Перед отправкой изменений:

python -m unittest discover -v

Тесты не требуют Stockfish: движок подменяется заглушками.

Старайтесь сохранять нативное поведение интерфейса на каждой ОС и добавлять тесты для логики, не зависящей от GUI.

Лицензия

Проект распространяется по лицензии MIT.

Сделано для разбора партий, а не борьбы с интерфейсом.

About

Иинструмент для анализа шахматных партий, использующий Stockfish и графический интерфейс на Python

Topics

Resources

Stars

11 stars

Watchers

1 watching

Forks

Used by

Contributors

Languages