feature: multiplayer – registrace hráčů, střídání tahů a agregace skóre #9

Merged
david-spacil merged 10 commits from feature/hraci into version/v0.1.0 2026-06-23 22:43:05 +02:00
Owner

Souhrn

Navazuje na bodování z předchozího PR a přidává podporu více hráčů. Na začátku se zadají jména, hráči se pak střídají po tazích a skóre se sčítá zvlášť pro každého. Součástí jsou i dřív placeholderové akce [h] (hodit znovu) a [k] (ukončit tah) a ošetření bustu a „hot dice“.

Změny

  • Nové globály
    • players – jméno hráče → seznam skóre po jednotlivých tazích,
    • aggr – jméno → celkový součet,
    • pointer – hráč právě na tahu,
    • first – první hráč (pro zacyklení pořadí),
    • h_bool – zda je aktuálně povoleno hodit znovu.
  • Nová add_players(iter=False) – rekurzivní zadávání jmen na startu hry. První hráč je povinný, [x] ukončí zadávání (až po prvním hráči), ošetřena prázdná a duplicitní jména.
  • evaluate() rozšířeno
    • implementace [h] – hodit znovu; povoleno jen po vyhodnocení aspoň jedné bodující kombinace (řízeno h_bool), jinak hláška. Reroll vrací ("count", count, "").
    • implementace [k] – ukončit tah; uloží score do players[pointer], aktualizuje aggr, vynuluje score a předá tah přes next_player().
    • vnořená next_player() – posune pointer na dalšího hráče, na konci se zacyklí zpět na first.
    • nová chyba ER03 pro neplatný vstup.
    • po bodující kombinaci se nastaví h_bool = False (odemkne reroll).
    • oprava regexu na raw string r"^\d+$".
  • game() rozšířeno
    • výpis „Na tahu je {pointer} ({aggr[pointer]})“,
    • bust (count != 0): vynuluje skóre tahu a automaticky předá tah dál (přes evaluate("k", …)),
    • hot dice: count == 0 → reset na 6,
    • ER03 přidáno do zpracování chybových hlášek + clear() před vstupem.
  • main() volá add_players() před prvním hodem.

Closes #1, closes #2, closes #5, closes #6.

### Souhrn Navazuje na bodování z předchozího PR a přidává podporu více hráčů. Na začátku se zadají jména, hráči se pak střídají po tazích a skóre se sčítá zvlášť pro každého. Součástí jsou i dřív placeholderové akce `[h]` (hodit znovu) a `[k]` (ukončit tah) a ošetření bustu a „hot dice“. ### Změny - **Nové globály** - `players` – jméno hráče → seznam skóre po jednotlivých tazích, - `aggr` – jméno → celkový součet, - `pointer` – hráč právě na tahu, - `first` – první hráč (pro zacyklení pořadí), - `h_bool` – zda je aktuálně povoleno hodit znovu. - **Nová `add_players(iter=False)`** – rekurzivní zadávání jmen na startu hry. První hráč je povinný, `[x]` ukončí zadávání (až po prvním hráči), ošetřena prázdná a duplicitní jména. - **`evaluate()` rozšířeno** - implementace **`[h]`** – hodit znovu; povoleno jen po vyhodnocení aspoň jedné bodující kombinace (řízeno `h_bool`), jinak hláška. Reroll vrací `("count", count, "")`. - implementace **`[k]`** – ukončit tah; uloží `score` do `players[pointer]`, aktualizuje `aggr`, vynuluje `score` a předá tah přes `next_player()`. - vnořená **`next_player()`** – posune `pointer` na dalšího hráče, na konci se zacyklí zpět na `first`. - nová chyba **ER03** pro neplatný vstup. - po bodující kombinaci se nastaví `h_bool = False` (odemkne reroll). - oprava regexu na raw string `r"^\d+$"`. - **`game()` rozšířeno** - výpis „Na tahu je {pointer} ({aggr[pointer]})“, - **bust** (`count != 0`): vynuluje skóre tahu a automaticky předá tah dál (přes `evaluate("k", …)`), - **hot dice**: `count == 0` → reset na 6, - ER03 přidáno do zpracování chybových hlášek + `clear()` před vstupem. - **`main()`** volá `add_players()` před prvním hodem. Closes #1, closes #2, closes #5, closes #6.
david-spacil added this to the v0.1.0 milestone 2026-06-23 22:42:46 +02:00
david-spacil added the Kind/Feature label 2026-06-23 22:42:46 +02:00
david-spacil self-assigned this 2026-06-23 22:42:46 +02:00
david-spacil added 10 commits 2026-06-23 22:42:47 +02:00
david-spacil merged commit cedf453861 into version/v0.1.0 2026-06-23 22:43:05 +02:00
david-spacil deleted branch feature/hraci 2026-06-23 22:43:08 +02:00
Sign in to join this conversation.