Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
KAPITOLA 11 Úvod do jazyka Python<br />
Hada je pozice v seznamu, kterou příkaz mění: první hodnota v seznamu polohaHada uchovává<br />
polohu hada na ose X a druhá hodnota udává jeho polohu na ose Y. Jazyk Python začíná počítat<br />
od nuly, takže osu X řídí položka polohaHada[0] a osu Y položka polohaHada[1]. Pokud by byl<br />
seznam delší, bylo by možné upravovat další položky příslušným zvýšením indexu: [2], [3] atd.<br />
Seznam polohaHada má sice vždy délku dvou prvků, což ale neplatí pro jiný seznam vytvořený<br />
na začátku programu: castiHada. Tento seznam obsahuje polohu těla hada za jeho hlavou.<br />
Jak had pojídá maliny a prodlužuje se, délka tohoto seznamu se zvětšuje a tím zároveň vzrůstá<br />
obtížnost hry: po chvíli hry je stále těžší nenarazit hlavou hada do jeho těla. Když se hlava<br />
dotkne těla, had hyne a hra končí. Chcete-li zajistit, aby tělo hada rostlo, zadejte tento řádek:<br />
castiHada.insert(0,list(polohaHada))<br />
Tento příkaz pomocí instrukce insert vloží do seznamu castiHada novou hodnotu: aktuální<br />
pozici hada. Když interpret jazyka Python dosáhne tohoto řádku, zvýší pokaždé délku hadova<br />
těla o jeden segment a umístí tento segment na aktuální polohu hadovy hlavy. Z hlediska hráče<br />
to vypadá, jako by had rostl. To by se však mělo stávat jen tehdy, když had sní malinu – jinak<br />
bude neustále růst. Zadejte následující řádky:<br />
if polohaHada[0] == polohaMaliny[0] ↩<br />
and polohaHada[1] == polohaMaliny[1]:<br />
malinaVyrostla = 0<br />
else:<br />
castiHada.pop()<br />
První instrukce zkontroluje, zda souřadnice X a Y hadovy hlavy odpovídají souřadnicím X<br />
a Y maliny, která představuje cíl hráče. Jestliže se hodnoty shodují, program předpokládá, že<br />
had malinu snědl, a nastaví proměnnou malinaVyrostla na hodnotu 0. Instrukce else informuje<br />
jazyk Python, jak postupovat, když had malinu nezkonzumoval: vyjmout (pop) nejstarší<br />
hodnotu ze seznamu castiHada.<br />
Instrukce pop je jednoduchá, ale chytrá: vrátí ze seznamu nejstarší hodnotu, ale zároveň ji odebere,<br />
takže se seznam o jednu položku zkrátí. V případě seznamu castiHada požádá interpret<br />
jazyka Python, aby odstranil část hadova těla, která leží nejdále od jeho hlavy. Z hlediska hráče<br />
to vypadá, jako by se celý had posunul a přitom neprodloužil. Ve skutečnosti se však had zvětší<br />
na jednom konci a zmenší na druhém. Díky příkazu else bude instrukce pop provedena pouze<br />
tehdy, když malina zůstane nesnědená. Pokud had malinu spolkl, poslední položka v seznamu<br />
nebude odstraněna, takže se délka hada prodlouží o jeden segment.<br />
Po chvíli hry je stále pravděpodobnější, že hráč malinu získal. Hra, ve které by bylo možné<br />
sníst jen jednu malinu, by byla docela nudná. Zadejte tedy následující řádky, které přidají na<br />
hrací plochu novou malinu, když had zkonzumuje tu stávající:<br />
if malinaVyrostla == 0:<br />
x = random.randrange(1,32)<br />
y = random.randrange(1,24)<br />
polohaMaliny = [int(x*20),int(y*20)]<br />
malinaVyrostla = 1<br />
163