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

Семейство: BoardGrid

Интерактивные поля N×M, захват клеток, match-3.

Игры

sto_kletok, ne_krestiki, tri_v_ryad, chapaev, dice_board, holodno_goryacho

Use Cases

flowchart LR
    Player((Player)) --> UC_Select[UC-SelectCell]
    Player --> UC_Swap[UC-SwapTiles]
    System((System)) --> UC_Render[UC-RenderBoardPNG]
    UC_Select --> UC_Validate[UC-ValidatePlacement]
    UC_Swap --> UC_Cascade[UC-MatchCascade]

FSM

stateDiagram-v2
    [*] --> AwaitMove: turnStart
    AwaitMove --> PlaceToken: cellSelected
    AwaitMove --> SwapTiles: swapValid
    PlaceToken --> CheckWin: tokenPlaced
    SwapTiles --> Cascade: matchesFound
    Cascade --> CheckWin: settled
    CheckWin --> GameOver: winCondition
    CheckWin --> NextTurn: continue
    NextTurn --> AwaitMove
    GameOver --> [*]

Sequence: ход на поле

sequenceDiagram
    participant P as Player
    participant API as GameService
    participant G as GridModule
    participant M as MediaRenderer

    P->>API: choose_cell {row,col}
    API->>G: validate_placement
    G-->>API: ok
    API->>G: apply + check_win
    API->>M: render_board_png
    API-->>P: view + WS broadcast

Shared module: grid.py

  • create_board(rows, cols, fill)
  • get_neighbors(row, col)
  • check_n_in_row(board, n, player_id)
  • territory_capture(board, cell, player_id) — для sto_kletok

Per-game вариации

Игра Поле Победа
sto_kletok 10×10 Больше клеток / очков
ne_krestiki 3×3+ Нестандартные правила (не X/O)
tri_v_ryad 8×8 Match-3, каскады
dice_board 6×6 3 в ряд после броска кубиков
chapaev бильярд Упрощение: пошаговый «удар»

NFR

  • NFR-G01, NFR-005 (media render p95 < 500ms)
  • NFR-G07: touch на сетке 320px+