Повнофункціональний шаховий двигун із графічним інтерфейсом на бібліотеці SFML та штучним інтелектом на основі алгоритму Minimax з Alpha-Beta відсіканням. Проєкт повністю розроблено на C++ із застосуванням об'єктно-орієнтованого програмування.
- Штучний інтелект (Minimax + Alpha-Beta Pruning): Рекурсивне побудова дерева ходів, оцінка позицій та мінімізація втрат.
- Позиційна оціночна функція (Piece-Square Tables): Використання вагової матриці цінностей клітинок для кожної фігури (захоплення центру, активність коней/слонів).
- Графічний інтерфейс (SFML): Інтерактивна шахівниця, підсвічування можливих ходів (сірі мітки), атак (червоні клітинки), рокірування (зелені мітки) та шаху королю (темно-червоний колір).
- Повна реалізація правил шахів:
- Звичайні ходи та взяття фігур.
- Рокірування (коротке та довге) з перевіркою відсутності атак на лінії руху.
- Абсолютне зв'язування фігур (унеможливлення ходу, що відкриває шах власному королю).
- Перетворення пішака при досягненні крайньої горизонталі (Promotion to Queen).
- Детекція закінчення гри (Шах, Мат, Пат).
Проєкт побудовано за класовою ієрархією:
Piece(Базовий абстрактний клас): Задає поля (price,pos,type,side,sprite,texture) та віртуальні методи (Selected(),Move(),AddCellPrice()).- Похідні класи:
Pawn,King,Queen,Rook,Bishop,Knight.
- Похідні класи:
Board: Керує станом дошки, зберігає список об'єктівstd::shared_ptr<Piece>, ініціалізує початкову позицію, відповідає за малювання та детекцію закінчення гри.Engine: Реалізує штучний інтелект (Minimax, Alpha-Beta відсікання, вибір та виконання оптимального ходу).CellPrices: Константні двовимірні матриці оцінки позиційного розташування фігур на дошці.
- Мова програмування: C++17
- Графічна бібліотека: SFML (Simple and Fast Multimedia Library)
- IDE / Компілятор: Visual Studio 2022 (MSVC)
- Ключові концепції: ООП (поліморфізм, спадкування), розумні вказівники (
std::shared_ptr), алгоритми теорії ігор.
cpp-chess-game-engine/
├── assets/
│ ├── figures/ # Зображення шахових фігур (.png)
│ └── fonts/ # Файли шрифтів (.ttf)
├── src/
│ ├── main.cpp # Головний цикл гри та обробка подій
│ ├── Board.cpp # Реалізація логіки дошки
│ ├── Pieces.cpp # Логіка ходів фігур
│ └── Engine.cpp # Алгоритми Minimax та Alpha-Beta
├── include/
│ ├── Board.h
│ ├── Pieces.h
│ ├── Engine.h
│ └── CellPrices.h
└── README.md