feature: bodování hodů a interaktivní herní smyčka #7

Merged
david-spacil merged 13 commits from feature/vyber-kostek into version/v0.1.0 2026-06-23 20:32:58 +02:00
Owner

Souhrn

Původní program jen hodil 6 kostkami a vypsal je. Tento PR z toho dělá hratelnou hru v kostky s bodováním – po každém hodu si hráč vybírá kostky k ponechání, ty se vyhodnotí podle bodovací tabulky a pokračuje se výběrem dalších ze zbývajících kostek.

Změny

  • Nový hodnoty.csv – bodovací tabulka (kombinace → body), načítá se při startu do slovníku hodnoty. Pokrývá jednotlivé kostky (1 = 100, 5 = 50), N-tice stejných hodnot (tři 1 = 1000 … šest 1 = 8000) a postupky (12345 = 750, 123456 = 1500).
  • Hod reprezentován řetězcem místo seznamu
    • throw(count) -> str vrací spojený řetězec (např. "351264"), doplněny type hinty.
    • show_throw(throw: str) si vstup interně rozloží na znaky a vykreslí stejný „pretty“ výpis jako dřív.
  • Nová evaluate(inp, count, throw) – zpracování tahu hráče:
    • validace vstupu (^\d+$), kontrola počtu (ER01) a rozsahu pozic (ER02),
    • rozdělení hodu na ponechané (pick) a zbývající (old_throw),
    • připočtení bodů přes vnořenou eval_score() do globálního score,
    • pokud ponechaná kombinace není v tabulce, výběr se neuzná a vrátí se původní hod,
    • vrací stavovou n-tici pro game().
  • Nová check_value(throw) – zjišťuje, zda hod obsahuje aspoň jednu bodovatelnou kombinaci.
  • game()game(data: tuple) – přepsáno na stavový automat:
    • ("count", count, throw) = běžný tah (vygeneruj/zobraz hod, zeptej se na akci),
    • ("msg", kód, …) = chybová hláška + opakování vstupu.
    • main() startuje hru jako ("count", 6, "").
  • Přidány importy typing.Any, re, csv.

Closes #3, closes #4

### Souhrn Původní program jen hodil 6 kostkami a vypsal je. Tento PR z toho dělá hratelnou hru v kostky s bodováním – po každém hodu si hráč vybírá kostky k ponechání, ty se vyhodnotí podle bodovací tabulky a pokračuje se výběrem dalších ze zbývajících kostek. ### Změny - **Nový `hodnoty.csv`** – bodovací tabulka (kombinace → body), načítá se při startu do slovníku `hodnoty`. Pokrývá jednotlivé kostky (1 = 100, 5 = 50), N-tice stejných hodnot (tři 1 = 1000 … šest 1 = 8000) a postupky (12345 = 750, 123456 = 1500). - **Hod reprezentován řetězcem místo seznamu** - `throw(count) -> str` vrací spojený řetězec (např. `"351264"`), doplněny type hinty. - `show_throw(throw: str)` si vstup interně rozloží na znaky a vykreslí stejný „pretty“ výpis jako dřív. - **Nová `evaluate(inp, count, throw)`** – zpracování tahu hráče: - validace vstupu (`^\d+$`), kontrola počtu (ER01) a rozsahu pozic (ER02), - rozdělení hodu na ponechané (`pick`) a zbývající (`old_throw`), - připočtení bodů přes vnořenou `eval_score()` do globálního `score`, - pokud ponechaná kombinace není v tabulce, výběr se neuzná a vrátí se původní hod, - vrací stavovou n-tici pro `game()`. - **Nová `check_value(throw)`** – zjišťuje, zda hod obsahuje aspoň jednu bodovatelnou kombinaci. - **`game()` → `game(data: tuple)`** – přepsáno na stavový automat: - `("count", count, throw)` = běžný tah (vygeneruj/zobraz hod, zeptej se na akci), - `("msg", kód, …)` = chybová hláška + opakování vstupu. - `main()` startuje hru jako `("count", 6, "")`. - Přidány importy `typing.Any`, `re`, `csv`. Closes #3, closes #4
david-spacil added this to the v0.1.0 milestone 2026-06-23 20:32:09 +02:00
david-spacil added the Kind/Feature label 2026-06-23 20:32:09 +02:00
david-spacil added 13 commits 2026-06-23 20:32:09 +02:00
david-spacil merged commit af4e7bc1c5 into version/v0.1.0 2026-06-23 20:32:58 +02:00
david-spacil deleted branch feature/vyber-kostek 2026-06-23 20:32:58 +02:00
Sign in to join this conversation.