@@ -14,7 +14,7 @@ musí o hře „pamatovat“, aby mohl aktuální stav zobrazit?
14
14
15
15
Bude potřebovat například aktuální polohu všech částí hada: kde má začátek?
16
16
Kroutí se doprava nebo doleva? Jak je dlouhý?
17
- Naopak barvu hada se stavu ukložit nepotřebuješ – každý had v téhle hře bude
17
+ Naopak barvu hada ve stavu uložit nepotřebuješ – každý had v téhle hře bude
18
18
stejný.
19
19
20
20
Napadne tě, jak polohu hada zapsat pomocí čísel, seznamů a dalších základních
@@ -35,7 +35,7 @@ Každý bod v rovině (třeba na obrazovce!)
35
35
je možné popsat dvěmi čísly: <var >x</var >-ovou a <var >y</var >-ovou souřadnicí.
36
36
Ta <var >x</var >-ová říká, jak moc vlevo je bod od nějakého počátku,
37
37
ta <var >y</var >-ová udává jak moc je nahoře.
38
- My za onen „počátek“ zvolíme roh okýnka, ve kterém se bude plazit náš had.
38
+ My za onen „počátek“ zvolíme roh okýnka, ve kterém se bude náš had plazit .
39
39
40
40
Na rozdíl od školní geometrie se had bude plazit po čtverečkové mřížce.
41
41
Je to jako na šachovnici – když jde pěšec na D5, D značí, jak moc je to
@@ -100,10 +100,6 @@ se souřadnicemi (10, 20).
100
100
Na to, abychom hada vykreslili, použijeme okýnko z Pygletu.
101
101
Tady je základní kostra programu Pyglet, které už bys měl{{a}} rozumět.
102
102
103
- Udělej si nový, prázdný adresář na hadí hru, a kostru si
104
- zkopíruj do souboru ` ui.py ` .
105
- Budeme ji dál rozvíjet.
106
-
107
103
``` python
108
104
import pyglet
109
105
@@ -116,6 +112,10 @@ def on_draw():
116
112
pyglet.app.run()
117
113
```
118
114
115
+ Udělej si nový, prázdný adresář na hadí hru, a kostru si
116
+ zkopíruj do souboru ` had.py ` .
117
+ Budeme ji dál rozvíjet.
118
+
119
119
<img src =" {{ static('green.png') }} " alt =" " style =" display :block ; float :right ; margin : 2px ; border : 1px solid #ccc ; border-radius : 1px ;" >
120
120
Stáhni si soubor [ green.png] ({{ static('green.png') }}) – zelený čtvereček –
121
121
a dej ho do adresáře, kam píšeš kód.
@@ -133,7 +133,7 @@ Potom zkus dovnitř do funkce `on_draw` přidat vykreslení obrázku na souřadn
133
133
green_image.blit(40 , 50 , width = 10 , height = 10 )
134
134
```
135
135
136
- Program spusť (` cd ` do nového adresáře; ` python ui .py ` ). Funguje?
136
+ Program spusť (` cd ` do nového adresáře; ` python had .py ` ). Funguje?
137
137
(Je docela důležité, aby fungoval – nevidíš-li zelený čtvereček,
138
138
nečti dál a program radši oprav.)
139
139
@@ -201,17 +201,16 @@ for x, y in snake:
201
201
...
202
202
```
203
203
204
- Funguje to? Vidíš v tom – aspoň zhruba – hada
205
- (i když je poskládaný ze čtverečků)?
204
+ Funguje to? Vidíš v tom – aspoň zhruba – hada poskládaného ze čtverečků?
206
205
207
206
{{ figure(
208
207
img=static('coords-blocks.svg'),
209
208
alt="Had na „šachovnici“ a ukázka programu",
210
209
) }}
211
210
212
211
Jestli ne, nezoufej, zkontroluj si to znovu, poptej se na radu.
213
- Řešení využij až jako krajní možnost, jak pokračovat dál – nebo na kontrolu
214
- správného řešení .
212
+ Ukázkové řešení využij až jako krajní možnost, jak pokračovat dál.
213
+ Nebo pro kontrolu .
215
214
216
215
{% filter solution %}
217
216
``` python
@@ -239,12 +238,11 @@ pyglet.app.run()
239
238
240
239
## Krmení
241
240
242
- <img src =" {{ static('red.png') }} " alt =" " style =" display :block ; float :right ; margin : 2px ; border : 1px solid #ccc ; border-radius : 1px ;" >
243
241
<img src =" {{ static('apple.png') }} " alt =" " style =" display :block ; float :right ; margin : 2px ; border : 1px solid #ccc ; border-radius : 1px ;" >
244
242
Aby bylo ve hře co dělat, budeme potřebovat pro hada krmení.
245
- Stáhni si do adresáře s projektem obrázek ` apple.png ` (ať už jednoduchý
246
- čtvereček nebo detailnější obrázek), a zkus vykreslit jídlo třeba
247
- na následující souřadnice:
243
+ Stáhni si do adresáře s projektem obrázek
244
+ [ apple.png ] (({{ static('apple.png') }}) a zkus vykreslit
245
+ jablíčka na následující souřadnice:
248
246
249
247
``` python
250
248
food = [(2 , 0 ), (5 , 1 ), (1 , 4 )]
@@ -278,12 +276,13 @@ pyglet.app.run()
278
276
```
279
277
{% endfilter %}
280
278
281
- Používáš-li detailnější obrázek, možná si všimneš, že má trošičku „zubaté“ hrany.
282
- To je dáno způsobem, jakým v Pygletu obrázek vykreslujeme.
283
- Úplné vysvětlení by zabralo příliš času, proto ukážu jen řešení.
284
- Až se naučíš grafiku víc do hloubky, pochopíš co se tu děje :)
279
+ Možná si všimneš, že obrázek má ve hře trošičku „zubaté“ hrany.
280
+ To je dáno způsobem, jakým v Pygletu vykreslujeme.
281
+ Úplné vysvětlení by se do tohoto návodu nevešlo, potřebuje trochu hlubší
282
+ znalosti počítačové grafiky.
283
+ Proto uvedu jen řešení.
285
284
286
- Do funkce ` on_draw ` , hned za ` clear ` , dej následující dva řádky:
285
+ Do funkce ` on_draw ` , hned za ` clear ` , dej následující tři řádky:
287
286
288
287
``` python
289
288
# Lepší vykreslování (pro nás zatím kouzelné zaříkadlo)
@@ -319,7 +318,8 @@ Obrázek se jmenuje <var>odkud</var>-<var>kam</var>.png.
319
318
320
319
> [ note]
321
320
> Co jsou taková ta divná „hadí vajíčka”?
322
- > To je pro přímad, že by had byl jen jedno políčko dlouhý – a tedy měl hlavu
321
+ > <img src =" {{ static('snake-tiles/tail-head.png') }} " alt =" " style =" display :block ; float :left ; margin : 2px ; border : 1px solid #ccc ; border-radius : 1px ;" >
322
+ > To je pro případ, že by had byl jen jedno políčko dlouhý – a tedy měl hlavu
323
323
> i ocas na stejném políčku.
324
324
> V naší hře se do takového stavu nedostaneme (had bude začínat s délkou 2),
325
325
> ale může se stát, že se do něj dostaneš omylem při vývoji hry.
@@ -372,7 +372,7 @@ právě vypsal{{a}}.
372
372
373
373
Začni s prázdným slovníkem, ` {} ` , a v cyklu ` for ` do něj postupně přidávej
374
374
záznamy.
375
- Pak slovník vypiš.
375
+ Pak celý slovník vypiš.
376
376
377
377
Až to budeš mít, měl by výpis vypadat asi takhle:
378
378
@@ -458,9 +458,9 @@ Místo toho, aby byl všude stejný kousek hada,
458
458
ale budeme chtít vybrat vždycky ten správný.
459
459
460
460
Jak na to?
461
-
462
461
Podle čeho ho vybrat?
463
462
463
+ Pojďme si to vyzkoušet vedle.
464
464
Vytvoř soubor ` smery.py ` a napiš do něj:
465
465
466
466
``` python
@@ -533,16 +533,15 @@ vrať se k materiálům k předchozím lekcím (hlavně k úvodu do Pythonu),
533
533
zkoušej a objevuj… A časem na to přijdeš.
534
534
535
535
Až se to stane, zkus své řešení co nejvíc * zjednodušit* a pak ho zakomponovat
536
- do vykreslovací funkce.
537
- To by už nemělo být příliš složité:
536
+ do vykreslovací funkce místo existujícího cyklu ` for x, y in snake ` .
538
537
539
538
``` python
540
- for ??? in ??? snake ??? :
539
+ for ... in ... :
541
540
...
542
- x = ???
543
- y = ???
544
- odkud = ???
545
- kam = ???
541
+ x = ...
542
+ y = ...
543
+ odkud = ...
544
+ kam = ...
546
545
...
547
546
548
547
snake_tiles[odkud + ' -' + kam].blit(
0 commit comments