20.03.2017 Views

Raspberry Pi - Uživatelská příručka

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!