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.

ČÁST III Programování a hackování<br />

Tato část kódu kontroluje, zda byla malina snědena. Přitom testuje, zda je proměnná malina<br />

Vyrostla nastavena na hodnotu 0. V tomto případě kód vybere náhodné umístění na hrací<br />

ploše pomocí modulu random, který jste importovali na začátku programu. Toto umístění je pak<br />

vynásobeno velikostí části hada (s šířkou a výškou 20 pixelů), aby jazyk Python mohl umístit<br />

novou malinu na hrací ploše. Je důležité volit umístění maliny náhodně: hráč se tak nemůže<br />

naučit, kde se malina objeví příště. Nakonec je proměnná malinaVyrostla nastavena zpět na<br />

hodnotu 1. Tím je zajištěno, že na hrací ploše nikdy nebude zobrazena více než jedna malina.<br />

Nyní tedy máte kód, který je potřeba k pohybu a růstu hada a konzumaci i růstu malin – tento<br />

proces se v herní terminologii označuje jako respawning (generování). Na obrazovce se však<br />

nic nevykresluje. Zadejte následující řádky:<br />

herniPlocha.fill(cernaBarva)<br />

for poloha in castiHada:<br />

pygame.draw.rect(herniPlocha,bilaBarva,Rect ↩<br />

(poloha[0], poloha[1], 20, 20)) ↩<br />

pygame.draw.rect(herniPlocha,cervenaBarva,Rect ↩<br />

(polohaMaliny[0], polohaMaliny[1], 20, 20))<br />

pygame.display.flip()<br />

Tyto příkazy požádají knihovnu pygame, aby vyplnila pozadí herní plochy černou barvou, vykreslila<br />

části hada (hlavu a tělo) bílou barvou a nakonec zobrazila červenou malinu. Poslední<br />

řádek pygame.display.flip() zajistí, aby knihovna pygame aktualizovala obrazovku – bez<br />

této instrukce nebudou položky pro hráče viditelné. Pokaždé, když dokončíte vykreslování<br />

objektů na obrazovce, nezapomeňte použít instrukci pygame.display.flip(), aby se změny<br />

pro hráče zobrazily.<br />

Aktuálně je had nesmrtelný. Hra, kde hráč nikdy nemůže přijít o život, by se rychle stala nudnou.<br />

Zadejte tedy následující řádky, které definují scénáře hadova skonu:<br />

if polohaHada[0] > 620 or polohaHada[0] < 0:<br />

konecHry()<br />

if polohaHada[1] > 460 or polohaHada[1] < 0:<br />

konecHry()<br />

První příkaz if kontroluje, zda had neopustil hrací plochu vodorovně, zatímco druhý příkaz<br />

if ověřuje, zda se had nedostal mimo hrací plochu ve svislém směru. V každém případě to pro<br />

hada nevěští nic dobrého: dojde k volání funkce konecHry, kterou jste definovali v předchozí<br />

části programu. Tato funkce vypíše zprávu na obrazovku a ukončí hru. Had by měl také zemřít,<br />

když jeho hlava narazí na libovolnou část jeho těla. Doplňte tedy tyto řádky:<br />

for teloHada in castiHada[1:]:<br />

if polohaHada[0] == teloHada[0] and ↩<br />

polohaHada[1] == teloHada[1]:<br />

konecHry()<br />

Příkaz for prochází všechny polohy částí hada od druhé položky seznamu až po jeho konec.<br />

Přitom je porovnává s aktuální polohou hlavy hada. Je důležité, abyste porovnávání nezačali<br />

od první položky, ale pomocí proměnné castiHada[1:] až od druhé. První položka je vždy<br />

164

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

Saved successfully!

Ooh no, something went wrong!