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