Перейти к содержанию

Семейство: CoopSilent

Кооператив без общения: молча выложить в правильном порядке.

Игры

koaliciya, poryadok

Use Cases

flowchart LR
    Player((Player)) --> UC_PlaySilent[UC-PlayCardSilent]
    System((System)) --> UC_CheckOrder[UC-CheckAscendingOrder]
    System --> UC_LoseLife[UC-LoseLifeOnError]
    Host((Host)) --> UC_StartRound[UC-StartRound]

FSM

stateDiagram-v2
    [*] --> DealCards: roundStart
    DealCards --> AwaitPlay: cardsDealt
    AwaitPlay --> CheckOrder: cardPlayed
    CheckOrder --> AwaitPlay: orderValid
    CheckOrder --> LoseLife: orderInvalid
    LoseLife --> DealCards: livesRemain
    LoseLife --> GameOver: noLives
    CheckOrder --> NextRound: allCardsPlayed
    NextRound --> DealCards: roundLessThanMax
    NextRound --> GameOver: allRoundsWon
    GameOver --> [*]

Sequence: Коалиция

sequenceDiagram
    participant P1 as Player1
    participant P2 as Player2
    participant API as GameService

    Note over P1,P2: no chat hints allowed
    P1->>API: play_card {value:12}
    API->>API: last_played=12, awaiting higher
    P2->>API: play_card {value:45}
    API->>API: 45>12 ok
    P2->>API: play_card {value:8}
    API->>API: 8<45 FAIL, lose life

Shared module: simultaneous.py

  • pending_plays — буфер до reveal (для одновременных ходов)
  • validate_ascending(last, new) → bool
  • round_config(round_num) → cards per player

Per-game вариации

Игра Объект Раунды
koaliciya числа 1–100 4 раунда, 1–4 карты, 4 жизни
poryadok карточки категорий сортировка по хронологии/размеру

NFR

  • NFR-G06: FR-056 — блокировка чат-подсказок (только game actions)
  • Кооперативная победа: winner_id = null, team_won: true