Nahrazuje rekurzivní „volej sám sebe pro další krok“ v game() a add_players() iterativními while smyčkami. Chování zůstává stejné, ale zásobník volání už neroste s délkou hry → odpadá riziko RecursionError u dlouhých partií. Při refaktoru add_players() je navíc doplněna validace číselného vstupu u finálního skóre.
Změny
game() – tělo zabaleno do while True. Rekurzivní volání game(data) odstraněna; následující stav se přenáší přes data do další iterace. Terminační větve ("win" a neznámá zpráva) ukončeny breakem.
add_players() – přepsáno z rekurze na tři while smyčky: (1) povinný první hráč, (2) další hráči až do [x], (3) finální skóre. Odpadl parametr iter. global zúženo na pointer, first, final_score (do players/aggr se jen přidávají klíče, rebinding není potřeba).
Validace finálního skóre – nečíselný vstup se odchytí (try/except ValueError) a dotaz se zopakuje, místo aby program spadl.
### Souhrn
Nahrazuje rekurzivní „volej sám sebe pro další krok“ v `game()` a `add_players()` iterativními `while` smyčkami. Chování zůstává stejné, ale zásobník volání už neroste s délkou hry → odpadá riziko `RecursionError` u dlouhých partií. Při refaktoru `add_players()` je navíc doplněna validace číselného vstupu u finálního skóre.
### Změny
- **`game()`** – tělo zabaleno do `while True`. Rekurzivní volání `game(data)` odstraněna; následující stav se přenáší přes `data` do další iterace. Terminační větve (`"win"` a neznámá zpráva) ukončeny `break`em.
- **`add_players()`** – přepsáno z rekurze na tři `while` smyčky: (1) povinný první hráč, (2) další hráči až do `[x]`, (3) finální skóre. Odpadl parametr `iter`. `global` zúženo na `pointer, first, final_score` (do `players`/`aggr` se jen přidávají klíče, rebinding není potřeba).
- **Validace finálního skóre** – nečíselný vstup se odchytí (`try/except ValueError`) a dotaz se zopakuje, místo aby program spadl.
Closes #11.
david-spacil
added this to the v0.1.0 milestone 2026-06-25 13:46:24 +02:00
david-spacil
self-assigned this 2026-06-25 13:46:24 +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
Nahrazuje rekurzivní „volej sám sebe pro další krok“ v
game()aadd_players()iterativnímiwhilesmyčkami. Chování zůstává stejné, ale zásobník volání už neroste s délkou hry → odpadá rizikoRecursionErroru dlouhých partií. Při refaktoruadd_players()je navíc doplněna validace číselného vstupu u finálního skóre.Změny
game()– tělo zabaleno dowhile True. Rekurzivní volánígame(data)odstraněna; následující stav se přenáší přesdatado další iterace. Terminační větve ("win"a neznámá zpráva) ukončenybreakem.add_players()– přepsáno z rekurze na třiwhilesmyčky: (1) povinný první hráč, (2) další hráči až do[x], (3) finální skóre. Odpadl parametriter.globalzúženo napointer, first, final_score(doplayers/aggrse jen přidávají klíče, rebinding není potřeba).try/except ValueError) a dotaz se zopakuje, místo aby program spadl.Closes #11.