refactor: převod rekurze na smyčky v game() a add_players() #12

Merged
david-spacil merged 4 commits from fix/loop into version/v0.1.0 2026-06-25 13:49:11 +02:00
Owner

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 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.

Closes #11.

### 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
david-spacil added 3 commits 2026-06-25 13:46:25 +02:00
david-spacil added 1 commit 2026-06-25 13:48:32 +02:00
david-spacil merged commit 58854806c2 into version/v0.1.0 2026-06-25 13:49:11 +02:00
Sign in to join this conversation.