Skip to content

Commit 288028a

Browse files
committed
snake: Don't suggest 1/0 to the poor students, use exit() instead
1 parent ac97464 commit 288028a

File tree

1 file changed

+15
-18
lines changed

1 file changed

+15
-18
lines changed

lessons/snake/logic/index.md

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -339,16 +339,13 @@ To je dobré udělat hned poté, co nové souřadnice hlavy získáš – konkr
339339
hned před řádkem `new_head = new_x, new_y` v metodě `move`.
340340

341341
A co při takovém nárazu udělat?
342-
Určitě sis už všiml{{a}}, že jakákoli chyba ukončí program.
343-
Nejjednodušší způsob ukončení programu je právě to – stačí tedy vyvolat chybu.
344-
Nejkratší způsob, jak v Pythonu vyvolat na určitém místě chybu, je dělení
345-
nulou: `1/0`.
342+
Nejjednodušší bude hru ukončit.
343+
Na to má Python funkci `exit()`, která funguje podobně jako když v programu
344+
nastane chyba.
345+
Jen místo chybového výpisu ukáže daný text.
346346

347-
Vyvolání chyby není příliš hezký a čistý způsob jak hráči signalizovat
348-
*GAME OVER*.
349-
Ani `1/0` není příliš hezký a čistý způsob jak vyvolat chybu.
350-
Za chvíli ale tuhle část předěláme, tak prozatím postačí rychlý a škaredý kód.
351-
Jen se s ním moc nechlub.
347+
Ukončení programu není příliš příjemný způsob, jak říct hráčovi že prohrál.
348+
Za chvíli ale tuhle část předěláme, tak prozatím tenhle jednoduchý způsob postačí.
352349

353350
```python
354351
def move(self):
@@ -359,7 +356,7 @@ Jen se s ním moc nechlub.
359356

360357
# Nový kód – kontrola vylezení z hrací plochy
361358
if new_x < 0:
362-
1/0 # Vyvolání chyby -- GAME OVER
359+
exit('GAME OVER')
363360

364361
new_head = new_x, new_y
365362
self.snake.append(new_head)
@@ -396,13 +393,13 @@ Vyzkoušej všechny varianty – severní, jižní, východní i západní zeď.
396393

397394
# Kontrola vylezení z hrací plochy
398395
if new_x < 0:
399-
1/0 # Vyvolání chyby -- GAME OVER
396+
exit('GAME OVER')
400397
if new_y < 0:
401-
1/0 # Vyvolání chyby -- GAME OVER
398+
exit('GAME OVER')
402399
if new_x >= self.width:
403-
1/0 # Vyvolání chyby -- GAME OVER
400+
exit('GAME OVER')
404401
if new_y >= self.height:
405-
1/0 # Vyvolání chyby -- GAME OVER
402+
exit('GAME OVER')
406403

407404
new_head = new_x, new_y
408405
self.snake.append(new_head)
@@ -425,8 +422,8 @@ state.height = window.height // TILE_SIZE
425422
Teď místo konce hry při naražení necháme hada „projít“ a objevit se na druhé
426423
straně.
427424

428-
Nemělo by to být tak složité udělat – stačí místo `1/0` vždy správně nastavit
429-
příslušnou hodnotu.
425+
Nemělo by to být tak složité udělat – stačí místo `exit()` vždy správně
426+
nastavit příslušnou hodnotu.
430427
Je ale potřeba si dát pozor kde použít `new_x` a kde `new_y`, kde `width` a kde
431428
`height`, a kde přičíst nebo odečíst jedničku, aby při číslování od nuly
432429
všechno sedělo.
@@ -703,7 +700,7 @@ a zkus, jak se hra hraje, když skončí hned po nárazu:
703700
```python
704701
# Kontrola, jestli had narazil
705702
if new_head in self.snake:
706-
1/0 # GAME OVER!
703+
exit('GAME OVER')
707704
```
708705

709706
{% filter solution %}
@@ -748,7 +745,7 @@ kousky kódu, které prohru implementují:
748745
{% filter solution %}
749746
* „Prvotní nastavení atributu“ do metody `__init__`.
750747
* „Kontrola, jestli had narazil“ do `move` místo původní kontroly,
751-
kdy se hra ukončila pomocí `1/0`.
748+
kdy se hra ukončila pomocí `exit()`.
752749
* „Zabránění pohybu“ na úplný začátek metody `move` (příkaz `return`
753750
okamžitě ukončí provádění metody).
754751
* „Grafická indikace“ do `ui.py`, za sekci pro vybírání obrázku pro kousek

0 commit comments

Comments
 (0)