Skip to content

bruhfessional/bulls_and_cows_workspace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Проект «Быки и Коровы» (Dart/Flutter)

1. Цель проекта

Многоплатформенная игра «Быки и Коровы» с единой бизнес-логикой, которая может быть использована в различных интерфейсах: CLI, Flutter (iOS/Android/Web), Telegram MiniApp.


2. Требования к архитектуре

Основные принципы:

  • Чистая архитектура (Clean Architecture / Hexagonal / Ports & Adapters)
  • Логика игры полностью отделена от интерфейсов и инфраструктуры
  • Поддержка многоплатформенных интерфейсов через отдельные пакеты
  • Подключаемая, легко тестируемая бизнес-логика

Структура монорепозитория:

  • /bulls_and_cows_workspace

  • /packages

  • /core_domain # Entities, правила игры, контракты

  • /game_engine # Сервисы, UseCases, состояние игры

  • /app_services # Адаптеры (генератор чисел, хранение, логирование)

  • /ui_cli # CLI интерфейс

  • /ui_flutter_app # Flutter мобильный и web интерфейс

  • /ui_web # (если отдельная веб-реализация)

  • /ui_telegram_miniapp # Telegram MiniApp


3. Слои и содержимое пакетов

3.1 core_domain

  • Чистая доменная модель (Pure Dart)
  • Entities: Game, Guess, Result
  • Value Objects
  • Правила игры (Bulls/Cows Calculator)
  • Контракты для генераторов чисел, репозиториев
  • Не содержит зависимостей на UI, Flutter, IO

3.2 game_engine

  • Pure Dart пакет
  • Сервисы и UseCases: startGame(), makeGuess(), getHistory(), isFinished()
  • Управление состоянием игры (GameState, GameStatus, GuessHistory)
  • Реализует API для UI через dependency inversion (работает через интерфейсы из core_domain)

3.3 app_services

  • Реализации контрактов для генерации чисел, хранения состояния, логирования
  • Платформозависимые адаптеры
  • Может использоваться всеми UI пакетами

3.4 UI пакеты

  • Отдельные пакеты для каждого интерфейса
  • Зависят только от game_engine и app_services
  • Содержат:
    • UI и навигацию
    • State Management (Bloc, Riverpod или аналог)
    • Взаимодействие с пользователем (CLI, Flutter, Telegram API)
  • Не содержат бизнес-логики

4. Подключаемая логика

  • Через dependency inversion:
abstract class NumberGenerator {
  String generate();
}

// Engine API (пример):
class BullsCowsEngine {
  GameSession start(GameConfig config);

  GuessResult guess(String value);

  GameState state;
}

  1. Технологии
  • Dart / Flutter
  • Monorepo package management: melos
  • State management: Bloc / Riverpod
  • Тестирование: unit-тесты на core_domain и game_engine
  • CI/CD: сборка всех UI пакетов и проверка логики

  1. Ограничения и рекомендации
  • Не включать Flutter в domain и engine
  • Логика игры не должна зависеть от UI
  • Хранение состояния и генерация чисел через адаптеры
  • Engine должен быть полностью тестируемым и reusable

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages