Skip to content

Latest commit

 

History

34 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Board Games♛

Застосунок-гра із двома класичними настільними іграми в одному вікні

License Java Version Java Swing Platform Status

Мовні версії:
  • Українська: README.md
  • English: README.en.md

Про проект 🎲

Цей невеликий додаток являє собою набір з двох настільних ігор "Шахи" і "Шашки".Гра в обох випадках розрахована як і на двох гравців (з одного пристрою) так і на партію з ШІ.Гра має кілька рівнів складності, зручний інтерфейс та цікавий дизайн.

Уся гра — одне повноекранне вікно. Жодних окремих спливаючих вікон під час переходів між меню, кампанією чи боєм — усе перемикається миттєво й плавно.

Мова використана у грі - англійська (для зручності)


Технологічний стек ✯

Компонент Технологія Деталі та інженерні рішення
Мова & Платформа Java 21 (LTS) Сучасний синтаксис: switch-вирази зі стрілковим синтаксисом, паттерн-матчинг (case KING -> ...) та виведення типів var.
Графічний інтерфейс Pure Java Swing Zero-Dependency UI: Жодних зовнішніх фреймворків (без JavaFX чи FlatLaf). Архітектура єдиного вікна (AppFrame) з CardLayout для миттєвого перемикання екранів.
Дизайн & L&F Customized Nimbus Базовий Nimbus LookAndFeel, повністю кастомізований через UIManager для підтримки глибокої темної теми із золотими акцентами.
Векторна графіка Java 2D (Graphics2D) Кастомне відмалювання UI-елементів з нуля: закруглені кнопки (RoundedButton), картки меню з тінями (MenuCard) та градієнтні фони (GradientPanel).
Візуалізація фігур Native Unicode (Serif) Фігури малюються шрифтовими символами (♔, ♛, ♜, ♟). Це виключає потребу в растрових ассетах і зберігає чіткість при будь-якій роздільній здатності.
Асинхронність SwingWorker Фонове виконання складних обчислень штучного інтелекту (Minimax / Negamax з alpha-beta відсіканням) без блокування головного UI-потоку.
Збірка проєкту Direct javac CLI Збірка напряму через стандартний компілятор Java без конфігураційного оверхеду Maven чи Gradle.
Архітектура даних In-Memory State Автономний offline-first підхід без прив'язки до баз даних або локальних файлів збереження.

📁 Структура проєкту

.
├── src/
│   └── com/
│       └── boardgames/
│           ├── Main.java                 # Точка входу (запуск AppFrame)
│           │
│           ├── ui/                       # Спільні UI-компоненти та стилізація
│           │   ├── AppFrame.java         # Єдине вікно застосунку (CardLayout)
│           │   ├── MenuPanel.java        # Стартове меню вибору гри
│           │   └── theme/                # Кастомні теми, закруглені кнопки та градієнти
│           │
│           ├── checkers/                 # Незалежний модуль: Українські шашки
│           │   ├── model/                # Модель стану (Board, Piece, Move, PlayerColor)
│           │   ├── logic/                # Валідація ходів, обов'язкові взяття, правила
│           │   ├── ai/                   # ШІ (Minimax / Negamax з alpha-beta)
│           │   └── ui/                   # Отрисовка дошки, діалоги налаштувань
│           │
│           └── chess/                    # Незалежний модуль: Класичні шахи
│               ├── model/                # Модель стану (ChessBoard, ChessPiece, Side)
│               ├── logic/                # Шах/мат, рокіровка, en passant, правило 50 ходів
│               ├── ai/                   # ШІ (Iterative Deepening, MVV-LVA, фоновий потік)
│               └── ui/                   # Отрисовка дошки Unicode-символами, перетворення пішаків
│
├── out/                                  # Згенеровані .class файли (після компіляції)
└── README.md

Характеристика ШІ✨

Штучний інтелект у грі зроблено у грі дуже якісно, завдяки чому при виборі вищої складності гра стає досить важкою

Характеристика ШІ на кожному рівні складності

Рівень Глибина / Час Особливості поведінки
Новачок 2 кроки / ~0.3 с Оцінює лише базовий матеріал; періодично робить випадкові ходи з топ-3 для імітації людських помилок.
Легкий 3–4 кроки / ~0.5 с Починає враховувати контроль центру та просування пішаків/шашок.
Середній 5–6 кроків / ~1.0 с Збалансована гра; використовує ітеративне поглиблення (Iterative Deepening).
Складний 7–8 кроків / ~2.5 с Глибокий аналіз з Alpha-Beta відсіканням та впорядкуванням ходів (MVV-LVA).
Експерт 9+ кроків / ~5.0 с Максимальна глибина розрахунку з жорстким часовим лімітом для складних позицій.

Запуск гри

Вимоги

  • JDK 21 або новіша версія.

Компіляція та запуск з консолі - дуже просто

# 1. Клонувати репозиторій
git clone https://github.com/JPSSProgramming/chees-game.git
cd board-games

# 2. Запустити застосунок
java -cp out com.boardgames.Main

Важливі нюанси гри

  • Гра не зберігає стан партії між перезапусками застосунку (БД - відсутня)
  • В поточній версії немає виводу історії ходів (PGN) на екран
  • В шахах відсутня автоматична перевірка на трикратне повторення позиції (реалізовано лише правило 50 ходів)
  • Перетворення шашки на дамку відбувається після завершення всього ходу, а не посеред ланцюжка взяттів(невелике спрощення)

📄 Ліцензія

Розповсюджується під ліцензією MIT. Деталі — у файлі `LICENSE`.

About

Desktop board games suite built with Java 21 (pure Swing) featuring Ukrainian Checkers and Chess with custom AI engine and local 2P mode.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages