IvanLutsenko/gomoku

★ 0Forks 0KotlinGitHub ↗Compare
androidboard-gamegomokukorgekotlinkotlin-multiplatformwasm

README

Gomoku · 五目

Гомоку (пять в ряд) на Kotlin Multiplatform и движке KorGE 6 с дизайн-системой Kintsugi — васи, тушь и золотые жилы: победная линия выкладывается золотом, как трещины в керамике кинцуги.

Таргеты: JVM (desktop) · JS · WasmJS · Android · iOS.

🎮 Играть в браузере: https://ivanlutsenko.github.io/gomoku/

Запуск

Требуется JDK 21.

./gradlew runJvm                      # desktop (основной вариант разработки)
./gradlew jsBrowserDevelopmentRun     # браузер (JS)
./gradlew assembleDebug               # Android APK → build/outputs/apk/debug/
./gradlew compileKotlinIosArm64       # iOS-таргет
./gradlew jvmTest                     # тесты

Что внутри

  • Геймплей: доска 15×15, победа от 5 камней в ряд (freestyle, overline засчитывается), отмена ходов (в том числе победного — партию можно продолжить), ничья, финальный оверлей с «Посмотреть доску».
  • AI: три уровня. Легко — random-near; Средне — эвристика угроз на скользящих окнах (видит разрывные паттерны вроде XX_XX); Сложно — та же оценка + 2-ply поиск (мой ход → лучший ответ соперника). Случайный tie-break, расчёт на фоновом потоке.
  • Режимы: против AI (цвет — чередование/белые/чёрные) или вдвоём за одним устройством.
  • UI Kintsugi: светлая и тёмная темы, золотые жилы (Catmull-Rom + jitter, порт из дизайн-макета), «прорастание» победной жилы, анимация появления камня, камни с радиальным градиентом, DPI-резкий текст через bitmap-атласы.
  • Опции: подсказки по запросу (3 на партию), подтверждение хода ghost-камнем, звук камня + вибрация (Android), фоновый эмбиент, персист настроек в JSON.

Правила — freestyle Gomoku: без запретов Renju (3×3, 4×4), ряд длиннее пяти тоже выигрывает.

Структура

src/main.kt        — точка входа
src/scenes/        — экраны (Menu, Game, Settings, Help, Victory) + Nav
src/ui/            — дизайн-система Kintsugi (Theme, KinSeam, KinBoard, Stone, Widgets)
src/logic/         — правила игры, настройки, AI
src/model/         — Board, модели (Position с нотацией A1–O15)
test/              — kotlin.test + KorGE ViewsForTesting
docs/design/       — дизайн-токены и спецификации (источник истины)

Ограничения / планы

  • AI — эвристика + 2-ply, не полный минимакс.
  • Координат A–O/1–15 на доске пока нет.

Backlog ведётся вне репозитория.

Contributors

IvanLutsenko

Issues