Skip to content

Repository files navigation

Board Games♛

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

LicenseJava VersionJava SwingPlatformStatus

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

Про проект 🎲

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

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

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


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

КомпонентТехнологіяДеталі та інженерні рішення
Мова & ПлатформаJava 21 (LTS)Сучасний синтаксис: switch-вирази зі стрілковим синтаксисом, паттерн-матчинг (case KING -> ...) та виведення типів var.
Графічний інтерфейсPure Java SwingZero-Dependency UI: Жодних зовнішніх фреймворків (без JavaFX чи FlatLaf). Архітектура єдиного вікна (AppFrame) з CardLayout для миттєвого перемикання екранів.
Дизайн & L&FCustomized 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