Skip to content

OrukamiTensey/cpp-chess-game-engine

Repository files navigation

♟️ C++ Chess Engine with Minimax AI & SFML GUI

C++ SFML Algorithm Platform

Повнофункціональний шаховий двигун із графічним інтерфейсом на бібліотеці SFML та штучним інтелектом на основі алгоритму Minimax з Alpha-Beta відсіканням. Проєкт повністю розроблено на C++ із застосуванням об'єктно-орієнтованого програмування.


Основні можливості

  • Штучний інтелект (Minimax + Alpha-Beta Pruning): Рекурсивне побудова дерева ходів, оцінка позицій та мінімізація втрат.
  • Позиційна оціночна функція (Piece-Square Tables): Використання вагової матриці цінностей клітинок для кожної фігури (захоплення центру, активність коней/слонів).
  • Графічний інтерфейс (SFML): Інтерактивна шахівниця, підсвічування можливих ходів (сірі мітки), атак (червоні клітинки), рокірування (зелені мітки) та шаху королю (темно-червоний колір).
  • Повна реалізація правил шахів:
    • Звичайні ходи та взяття фігур.
    • Рокірування (коротке та довге) з перевіркою відсутності атак на лінії руху.
    • Абсолютне зв'язування фігур (унеможливлення ходу, що відкриває шах власному королю).
    • Перетворення пішака при досягненні крайньої горизонталі (Promotion to Queen).
    • Детекція закінчення гри (Шах, Мат, Пат).
image

Архітектура та ООП структура

Проєкт побудовано за класовою ієрархією:

  • 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

About

Chess game engine with SFML GUI and AI based on Minimax algorithm with Alpha-Beta Pruning written in C++.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages