Repository files navigation
🖥️ Інтерфейс користувача (UI)
Головне меню:
Вибір стилю: Класичні шашки або Стилізовані ★
Вибір противника (комп'ютер або людина) ★
Вибір кольору шашок (чорні, білі або рандом) ★
Вибір складності (тільки проти комп'ютера) ★
Меню під час гри:
Нова гра ★
Збереження гри (у JSON-файл) ★
Завантаження збереженої гри ★
Турнірний режим ★
Переглянути статистику ★
Скасувати останній хід ★
Вихід з програми ★
Ігрове поле:
Дошка 8x8 з класичними кольорами ★
Відображення шашок обох гравців, у т.ч. дамок ★
Підсвічування можливих ходів вибраної шашки ★
Вказівка, чия черга ходу ★
Окреме оформлення шашок у режимі "Хвостики" (анімована ковбаса та кіт) ★
Екран завершення гри:
Виведення переможця гри ★
Варіанти дій: почати нову гру або вийти з програми ★
Початок гри:
Ініціалізація поля та розміщення шашок ★
Можливість обрати гравця, який ходить першим ★
Якщо гравець обрав чорні шашки проти AI — AI робить перший хід ★
Механіка гри:
Рух шашок лише по діагоналі ★
Можливість захоплення шашки суперника ★
Автоматичне перетворення в дамку на останньому ряду ★
Обов’язкове взяття: якщо можна "бити" — хід без взяття не дозволяється ★
Дамка може ходити в усіх напрямках по діагоналі, включно з багатоходовими захопленнями ★
Якщо є ще одне захоплення — автоматично надається можливість продовжити комбінацію ★
Чергування ходу між гравцями або гравцем і AI ★
Завершення гри:
Перемога: якщо у суперника немає ходів або немає шашок ★
Нічия при патовій ситуації ★
Гра з комп'ютером:
Реалізовано AI з 4 рівнями складності (легкий, середній, складний, профі) ★
AI надає пріоритет захопленням, багатоходовим комбінаціям, та униканню вразливих позицій ★
💾 Збереження та завантаження гри
Збереження в JSON-файл: поточна дошка, шашки, активний гравець, дамки, хід ★
Завантаження гри: з меню ★
Історія ходів зберігається для можливості їх скасування ★
Турнірний режим:
Вибір кількості ігор (від 2 до 100) ★
Автоматичне чергування партій ★
Підрахунок перемог кожної сторони ★
Завершальний екран з результатом турніру та переможцем ★
Скасування ходу:
Гравець може повернути останній хід ★
У режимі проти AI — відкат двох останніх ходів (гравця та AI) ★
Ведення статистики:
Кількість перемог білих шашок, чорних шашок, нічиїх ★
Сумарний час гри ★
Дата останньої гри ★
Зберігання у файл stats.dat та завантаження ★
Різні стилі гри:
Класичні шашки (чорні та білі)
Стиль "Хвостики" (ковбаса та хвостики)
Передача стилю ★
.NET Framework 4.7.2 або новіше
Windows OS
Клонуйте репозиторій
Відкрийте CheckersGame.sln у Visual Studio
Зіберіть і запустіть проект
Принцип
Реалізація
Коментар
SRP (Single Responsibility Principle)
Game , GameController , GameSaver , MainForm
Кожен клас відповідає за свою окрему відповідальність
OCP (Open/Closed Principle)
AIService підтримує додавання нових стратегій без змін старих
Добре структурований метод GetBestMove()
LSP (Liskov Substitution Principle)
Piece , Move використовуються взаємозамінно
Всі компоненти гри очікувано поводяться
ISP (Interface Segregation Principle)
Класи не мають зайвих методів
Інтерфейси не перевантажені
DIP (Dependency Inversion Principle)
Частково — залежності створюються в контролері
Можна покращити через DI
DRY
Clone() → 1 → 2 , SaveState()
Уникає дублювання логіки
KISS
Простий, логічний код
Чіткий поділ між UI, логікою та збереженням
YAGNI
Впроваджено лише необхідні функції
Немає зайвих абстракцій
Encapsulation
Поля в Piece , Приватні поля в Board , тощо
Доступ лише через методи
🛠️ Refactoring Techniques
🔁 Впровадити DI-контейнер (наприклад Autofac або Microsoft.Extensions.DependencyInjection)
♟️ Винести логіку AI по рівнях у окремі стратегії (Strategy Pattern )
🏭 Використати Factory Pattern для створення AI, гри, налаштувань
📊 Можна реалізувати Observer/EventAggregator для розширення подій
🎮 Головне меню гри (Нова гра)
♟️ Ігрове поле (класичний стиль)
🐾 Ігрове поле (стиль "Хвостики")
🗂️ Вигляд меню під час гри
✨ Підсвічування ходу шашки
You can’t perform that action at this time.