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

yatzy — Яцзы

Поле Значение
plugin_id yatzy
Выпуск шоу S5e03 «Яцзы»
Версия spec 0.1
Игроки 2–4
Семейство DiceAndScore
Tier 1

Цель

Набрать наибольшую сумму очков, заполнив scorecard из 13 категорий. Классические правила Yatzy / Yahtzee.

Компоненты

Элемент Описание
Кости 5× d6
Scorecard 13 категорий на игрока
Броски До 3 за ход, с удержанием костей между бросками

Категории scorecard

Верхняя секция: onessixes (сумма костей с данным номиналом).
Комбинации: three_of_kind, four_of_kind, full_house, small_straight, large_straight, yatzy, chance.

Бонус +35 при сумме верхней секции ≥ 63 (MVP default).

Ход

  1. roll_dice — первый бросок (или после keep_dice).
  2. keep_dice {indices: number[]} — удержать кости, перебросить остальные (макс 2 reroll).
  3. score_category {category: string} — записать очки в категорию (один раз за игру).

После score_category — ход следующего игрока.

FSM

stateDiagram-v2
    [*] --> AwaitRoll: turnStart
    AwaitRoll --> Rolled: rollDice
    Rolled --> Rolled: keepDice
    Rolled --> Scored: scoreCategory
    Scored --> CheckDone: nextPlayer
    CheckDone --> AwaitRoll: moreCategories
    CheckDone --> GameOver: allFilled
    GameOver --> [*]

GameState

{
  "phase": "Rolled",
  "dice": [2, 3, 3, 5, 6],
  "kept": [false, true, true, false, false],
  "rolls_left": 2,
  "current_player_id": "uuid",
  "player_order": ["uuid1", "uuid2"],
  "scorecards": {
    "uuid1": {"ones": 3, "twos": null, "...": null}
  },
  "winner_id": null
}

Actions

type payload phase
roll_dice {} AwaitRoll
keep_dice {indices: number[]} Rolled
score_category {category: string} Rolled

Победа

Все категории заполнены у всех → winner_id = max total score.

FR

FR-yatzy-01…05 — см. functional-requirements-games.md

Связанные документы