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),
### 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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
hodnoty.csv– bodovací tabulka (kombinace → body), načítá se při startu do slovníkuhodnoty. 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).throw(count) -> strvrací 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.evaluate(inp, count, throw)– zpracování tahu hráče:^\d+$), kontrola počtu (ER01) a rozsahu pozic (ER02),pick) a zbývající (old_throw),eval_score()do globálníhoscore,game().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, "").typing.Any,re,csv.Closes #3, closes #4