Přenos mechanik z kostky/kostky.py do počitadla. Kód je převzatý 1:1, přizpůsobené je jen názvosloví (players/aggr → hraci/score) a to, že skóre se sem zadává ručně místo házení kostkami.
Co přibylo
Vynulování po třech nulách — add_score()
Logika z větve elif inp == "k" v předloze. Když je zadaná hodnota 0, funkce se podívá na hraci[hrac][-2:]; pokud existují dva předchozí záznamy a jejich součet je 0, zapíše se -sum(hraci[hrac]) a vyskočí hláška „Po třech nulových hodech bylo vaše skóre vynulováno." Do historie se — stejně jako v předloze — uloží ta záporná srovnávací hodnota, ne 0, čímž se zároveň resetuje indikátor nulových hodů.
Kontrola a vyhlášení vítěze — check_win(), to_sorted_tuple(), win()
Doslova podle předlohy, včetně Counter kontroly remízy na prvním místě a výsledné tabulky „Pořadí / Hráč / Skóre". check_win() se volá jen když pointer == first, tedy až po dokončeném kole, aby měli všichni hráči stejný počet tahů.
Finální skóre — dotaz na konci char_create(), stejný prompt i try/except jako v předloze, výchozí 10 000.
Indikátor x/xx u hráče na tahu. V předloze je v řádku „Na tahu je…", tady je v promptu pro zadání skóre: Zadejte skóre hráče A (200xx/1000):.
Mimo předlohu
try/except ValueError kolem int(inp) při zadávání skóre — bez toho původní int(inp) shodil celou rozehranou hru při překlepu. Hláška je stejná jako u zadávání finálního skóre.
Druhý commit opravuje drobnou chybu, kterou jsem převzal z předlohy: [-2:][0] vrátí u seznamu s jediným záznamem tentýž prvek jako [-1:][0], takže se xx zobrazilo už po první nule. Na herní logiku to nemá vliv (vynulování má vlastní kontrolu len(last_two) > 1), jde jen o zobrazení. V předloze je na to založené kostky#32.
Ověření
Skriptované průchody hrou:
tři nuly za sebou vynulovaly skóre 200 → 0, hláška sedí
remíza 1000:1000 hru nezastavila, pokračovalo se do dalšího kola, pak vyhrál hráč s 1010
indikátor po opravě: před prvním tahem bez značky, po první nule x, po druhé xx
nečíselný vstup u skóre i u finálního skóre hru neshodí
Přenos mechanik z [kostky/kostky.py](https://gitea.spacilovi.eu/david-spacil/kostky/src/branch/main/kostky/kostky.py) do počitadla. Kód je převzatý 1:1, přizpůsobené je jen názvosloví (`players`/`aggr` → `hraci`/`score`) a to, že skóre se sem zadává ručně místo házení kostkami.
## Co přibylo
**Vynulování po třech nulách** — `add_score()`
Logika z větve `elif inp == "k"` v předloze. Když je zadaná hodnota 0, funkce se podívá na `hraci[hrac][-2:]`; pokud existují dva předchozí záznamy a jejich součet je 0, zapíše se `-sum(hraci[hrac])` a vyskočí hláška „Po třech nulových hodech bylo vaše skóre vynulováno." Do historie se — stejně jako v předloze — uloží ta záporná srovnávací hodnota, ne 0, čímž se zároveň resetuje indikátor nulových hodů.
**Kontrola a vyhlášení vítěze** — `check_win()`, `to_sorted_tuple()`, `win()`
Doslova podle předlohy, včetně `Counter` kontroly remízy na prvním místě a výsledné tabulky „Pořadí / Hráč / Skóre". `check_win()` se volá jen když `pointer == first`, tedy až po dokončeném kole, aby měli všichni hráči stejný počet tahů.
**Finální skóre** — dotaz na konci `char_create()`, stejný prompt i `try/except` jako v předloze, výchozí 10 000.
**Indikátor `x`/`xx`** u hráče na tahu. V předloze je v řádku „Na tahu je…", tady je v promptu pro zadání skóre: `Zadejte skóre hráče A (200xx/1000):`.
## Mimo předlohu
`try/except ValueError` kolem `int(inp)` při zadávání skóre — bez toho původní `int(inp)` shodil celou rozehranou hru při překlepu. Hláška je stejná jako u zadávání finálního skóre.
Druhý commit opravuje drobnou chybu, kterou jsem převzal z předlohy: `[-2:][0]` vrátí u seznamu s jediným záznamem tentýž prvek jako `[-1:][0]`, takže se `xx` zobrazilo už po první nule. Na herní logiku to nemá vliv (vynulování má vlastní kontrolu `len(last_two) > 1`), jde jen o zobrazení. V předloze je na to založené [kostky#32](https://gitea.spacilovi.eu/david-spacil/kostky/issues/32).
## Ověření
Skriptované průchody hrou:
- tři nuly za sebou vynulovaly skóre 200 → 0, hláška sedí
- remíza 1000:1000 hru nezastavila, pokračovalo se do dalšího kola, pak vyhrál hráč s 1010
- indikátor po opravě: před prvním tahem bez značky, po první nule `x`, po druhé `xx`
- nečíselný vstup u skóre i u finálního skóre hru neshodí
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Převzato 1:1 z kostky/kostky.py a přizpůsobeno počitadlu:
- volitelné finální skóre při zakládání hry (výchozí 10 000)
- vynulování skóre po třech nulových hodech za sebou
- indikátor "x"/"xx" u hráče na tahu
- check_win() + to_sorted_tuple() + win() s výslednou tabulkou
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sliceování [-2:][0] vrátí u seznamu s jediným záznamem tentýž
prvek jako [-1:][0], takže po první nule se zobrazilo rovnou "xx".
Nahrazeno přímým indexováním s kontrolou délky.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
Přenos mechanik z kostky/kostky.py do počitadla. Kód je převzatý 1:1, přizpůsobené je jen názvosloví (
players/aggr→hraci/score) a to, že skóre se sem zadává ručně místo házení kostkami.Co přibylo
Vynulování po třech nulách —
add_score()Logika z větve
elif inp == "k"v předloze. Když je zadaná hodnota 0, funkce se podívá nahraci[hrac][-2:]; pokud existují dva předchozí záznamy a jejich součet je 0, zapíše se-sum(hraci[hrac])a vyskočí hláška „Po třech nulových hodech bylo vaše skóre vynulováno." Do historie se — stejně jako v předloze — uloží ta záporná srovnávací hodnota, ne 0, čímž se zároveň resetuje indikátor nulových hodů.Kontrola a vyhlášení vítěze —
check_win(),to_sorted_tuple(),win()Doslova podle předlohy, včetně
Counterkontroly remízy na prvním místě a výsledné tabulky „Pořadí / Hráč / Skóre".check_win()se volá jen kdyžpointer == first, tedy až po dokončeném kole, aby měli všichni hráči stejný počet tahů.Finální skóre — dotaz na konci
char_create(), stejný prompt itry/exceptjako v předloze, výchozí 10 000.Indikátor
x/xxu hráče na tahu. V předloze je v řádku „Na tahu je…", tady je v promptu pro zadání skóre:Zadejte skóre hráče A (200xx/1000):.Mimo předlohu
try/except ValueErrorkolemint(inp)při zadávání skóre — bez toho původníint(inp)shodil celou rozehranou hru při překlepu. Hláška je stejná jako u zadávání finálního skóre.Druhý commit opravuje drobnou chybu, kterou jsem převzal z předlohy:
[-2:][0]vrátí u seznamu s jediným záznamem tentýž prvek jako[-1:][0], takže sexxzobrazilo už po první nule. Na herní logiku to nemá vliv (vynulování má vlastní kontrolulen(last_two) > 1), jde jen o zobrazení. V předloze je na to založené kostky#32.Ověření
Skriptované průchody hrou:
x, po druhéxx🤖 Generated with Claude Code