Jak nakrmit hada (1. část)

Ostatní jazyky Petr Lite Políčková grafika Jak nakrmit hada (1. část)

Naším dalším programem bude hra Had. S podobnou hrou jste se zřejmě již setkali. Po ploše se pohybuje had, požírá jídlo a s každým polknutím se prodlouží o článek. My si hru ještě trochu vylepšíme. Had bude požírat různé typy jídla a články hada budou také různé podle jídla, které had spolkne.

Založte nový program s názvem Had. Otevře se program zející prázdnotou a bez jediného příkazu, ale to nám nevadí, protože za chvíli okna programu zaplníme hezkou novou hrou.

Připravíme hrací plochu programu a to tak, že ji po obvodě obestavíme zdí. Z předešlých lekcí máte jistě ještě v knihovně předmět Zeď . Vložte ho do pole Společné proměnné a funkce. Dvojklikem na prvek plocha vyvolejte editaci hlavní plochy programu. Položte předmět Zeď do levého horního rohu plochy.

Podíváme se na novou vlastnost plochy. Každé políčko na ploše obsahuje kromě obrázku předmětu ještě pět logických přepínačů a tři číselné hodnoty. Logický přepínač umožňuje uchovat stav ano/ne a tento stav později testovat. V našem programu použijeme první přepínač k signalizaci, že na políčku je postavena zeď nebo se tam nachází článek hada. Nebudeme tak muset vyhodnocovat předmět na políčku, jenom se vždy zeptáme přepínače: "Je na políčku zeď nebo článek hada?" Můžeme dokonce používat více variant zdí aniž musíme měnit něco v programu.

V panelu nástrojů editoru plochy je úplně vpravo rozbalovací seznam typu editace. Rozbalte jej a zvolte funkci Přepínač 1 . Zobrazená plocha se změní, v levém horním rohu každého políčka se objeví tmavě červený čtvereček . Čtvereček je indikátor stavu přepínače 1 v políčku. Nyní je vypnutý (stav "ne"). Zapněte v panelu nástrojů přepínací tlačítko Editace (kliknutím na tlačítko). Tím aktivujete režim úpravy obsahu políček. Klikněte na políčko v levém horním rohu s předmětem Zeď. Čtvereček se stane světle červený se značkou zaškrtnutí . Přepínač 1 na políčku je nyní zapnutý (stav "ano"). Vypněte editaci políček novým kliknutím na tlačítko Editace .

Teď bychom rádi položili zeď kolem celé plochy. Máme k dispozici trochu snadnější postup, než neustálé kopírování předmětu pravým tlačítkem myši. V panelu nástrojů zapněte přepínací tlačítko Výplň . Stiskněte levé tlačítko myši na předmětu zdi v levém horním rohu plochy a táhněte myší do pravého horního rohu, tam tlačítko myši pusťte. Plocha, kterou jste takto označili, se vyplnila výchozím políčkem. Podobně vyplňte i ostatní strany plochy. Nakonec vypněte tlačítko Výplň a ještě můžete pravým tlačítkem myši doplnit zeď někam do plochy, například podle vzoru:

Při doplňování políček zdi používejte kopii existujícího políčka z plochy (pravým tlačítkem myši) namísto položení nového předmětu zdi do plochy - tak zajistíte kopírování políčka včetně nastaveného přepínače 1.

Připravíme jídlo, které bude had požírat. Vytvořte pět nových předmětů a nakreslete do nich obrázky hadího jídla. Například:

Vytvoříme články hada. Nakreslete si nejdříve prázdný článek hada, ten rozkopírujte a do článků nakopírujte obrázky předmětů.Vyberte si nejdříve pravým tlačítkem myši v paletách barev původní zelenou podkladovou barvu - tím zajistíte, že po položení obrázku zůstane původní podklad průhledný. Barvu podkladu zjistíte najetím kurzoru myši nad podkladovou barvu, příslušná barva se v paletách barev zdůrazní. Kopii proveďte označením předmětu výběrovým obdélníkem tak, abyste neoznačili i okrajový rámeček. Poté např. klávesy Ctrl+C a Ctrl+V.

Podobně vytvoříme tři předměty s obrázky jedu a jeden článek hada s obrázkem lebky:

Posledním grafickým úkonem bude vytvoření hlavy hada. Jako hlavu hada použijeme Petříka. Vyvolejte editaci sprajtu Petříka dvojklikem myší na prvek Petřík v poli Společných proměnných a funkcí. Otevřete tlačítkem Vlastnosti okno pro nastavení vlastností sprajtu. Změňte řádek Prodleva mezi fázemi z 55 na 165 (doba mezi jednotlivými fázemi animace), řádek Fází na krok (0 = ihned) z 8 na 0 (posouvá se ihned), řádek Fází pro klid změňte z 1 na 2 a řádek Fází pro pohyb ze 4 na 0. Uzavřete okno stiskem klávesy Enter. Sprajt Petříka má teď čtyři směry a dvě fáze pro klid.

Vyhoďte první obrázek vlevo nahoře s Petříkem. Dvojklikem do obrázku vyvolejte editaci obrázku a nakreslete hlavu hada dívající se směrem doprava. Vraťte se tlačítkem Předešlá editace do editoru sprajtu. Pravým tlačítkem myši zkopírujte první obrázek i do druhého obrázku na stejném řádku. V editoru upravte hlavu tak, aby had otvíral pusu. Zkopírujte oba obrázky i do ostatních řádků pro ostatní směry. Vyvoláním editací obrázků otočte hlavy podle směrů na řádcích sprajtu, použijte k tomu funkci Úpravy . Nakonec můžete sprajt vyzkoušet tlačítkem Test .

Předmětů s obrázky jídla máme v našem programu již větší množství a možná bychom je rádi v budoucnu ještě rozšířili. S našimi současnými znalostmi bychom museli každý typ předmětu obsluhovat zvlášť, a to by již bylo trochu těžkopádné. Proto se naučíme používat nový prvek - seznam.

Nejdříve si seznam připravíme, přestože zatím nevíme, k čemu vlastně je. Ze skupiny řízení programu přetáhněte do pole Společné proměnné a funkce prvek seznam . Pojmenujte ho seznam jídel. Po jeho rozevření uvidíte tři prvky. První prvek, počet , přejmenujte na 5 - počet jídel. Druhý prvek, index , přejmenujte na index jídla. Třetí prvek, inkrementace indexu , přejmenujte na inkrementace indexu jídla. Do seznamu doplňte ještě dva nové (prázdné) předměty, pojmenujte je jídlo a jídlo - had.

Nyní si vysvětlíme, co to seznam je. Seznam je něco jako kniha. Všechny stránky knihy vypadají podobně, například na každé stránce bude jeden obrázek a jeden text, ale přitom je v každém obrázku či textu něco jiného. V našem seznamu uchováme předměty jídla a článků hada, abychom si usnadnili jejich použití. Na každé stránce seznamu bude jiný obrázek jídla a jiný obrázek článku hada. První položka v seznamu udává počet stránek seznamu, my máme v seznamu 5 typů jídel (údaj zapisujeme jako číslo za kterým může následovat jakýkoliv komentář). Druhá položka je číslo vybrané stránky seznamu, tj. ukazatel seznamu (čísluje se od stránky 0). Třetí položka určuje, o kolik stránek se ukazatel automaticky posune při každém přístupu k nějaké datové položce seznamu (poznámka: slovo inkrementace znamená zvýšení).

Seznam jídel musíme při startu programu naplnit, to znamená určit, jaký předmět na které stránce seznamu bude. Příkazy pro naplnění seznamu vidíte na následujícím obrázku. Umístěte je na začátek hlavní funkce programu.

Před zahájením plnění seznamu určíme počáteční stránku, od které budeme seznam plnit. Nastavíme prvek index jídla na hodnotu 0. Použijeme automatické zvyšování čísla stránky, proto nastavíme prvek inkrementace indexu jídla na hodnotu 1.

Nejdříve naplníme předmět jídlo na všech stránkách seznamu. Postupně nastavujeme prvek jídlo na jednotlivé předměty jídla. Předměty se ukládají do seznamu a po každém nastavení předmětu se stránka automaticky zvýší o jedničku. Po nastavení posledního předmětu se ukazatel stránek automaticky převine na začátek (tím že přeteče přes konec). Začneme plnit předměty jídlo

  • had, opět se stránky samy
zvyšují nahoru. Na závěr nastavíme automatické zvyšování stránek na hodnotu 0, protože v programu již automatické zvyšování nebudeme používat.

Bude-li během hry hráč neúspěšný, to znamená narazí-li had na překážku nebo se nají jedu, začne hra od začátku. K tomu budeme potřebovat znovu vykreslit plochu programu tak, jako při startu, tj. bez jedů a jídel. Mohli bychom plochu vyčistit programově, ale je jeden snadnější způsob. Hlavní plochu si můžeme uschovat do proměnné typu plocha a při nové hře ji pomocí této proměnné jednoduše obnovit.

Vytvořte novou proměnnou plochy (kopií prvku plocha z pole Knihovny proměnných a funkcí do pole Společných proměnných a funkcí) a pojmenujte ji uschovaná hrací plocha. Na začátek programu dejte příkaz pro uschování hlavní plochy:

Při hře budeme hráči zobrazovat jeho nejvyšší dosažené skóre. Vytvořte číselnou proměnnou s názvem dosažené maximum, její hodnotu nastavte na nulu.

Vytvořte novou funkci s názvem nová hra. Funkci necháme vykonat při startu programu, a proto ji doplňte na začátek programu za skupinu pro naplnění seznamu jídel. Její obsah budeme sestavovat podle obrázku uvedeného níže.

Vytvořte logickou proměnnou příznak pohybu hada, číselnou proměnnou délka hada, číselnou proměnnou čítač pro další krok a funkci s názvem zobrazení počtu článků hada. Logickou proměnnou příznak pohybu hada použijeme k indikaci zahájení pohybu hada (po startu hry bude had stát na místě a čekat na stisk první klávesy). Hodnotu proměnné nastavte ve funkci nová hra na vypnuto (tj. ne). Proměnná délka hada udává počet článků hada a během hry se zvyšuje. Při zahájení nové hry ji nastavte na 0. Čítač pro další krok čítá časové impulsy 0.05 sekundy, než se provede posun hada o políčko (snižuje se od hodnoty 9 do 0, čili jeden krok trvá asi 0.5 sekundy). Nastavte čítač při zahájení hry na hodnotu 1, aby se první krok provedl ihned po stisku první klávesy.

Dalším příkazem při zahájení nové hry je návrat uschované hrací plochy. Použijte stejný příkaz jako při úschově plochy, ale s obráceným pořadím prvků. Poznamenejme, že operace přiřazení plochy kopíruje do cílové proměnné obsah plochy, ne referenční odkaz na zdrojovou plochu. Následujícími příkazy se provede nastavení výchozí pozice hada. Vypněte viditelnost Petříka, nastavte jeho souřadnice na (horizontálně) X=9 a (vertikálně) Y=8, otočte ho vpravo a opět viditelnost zapněte. Na závěr funkce nová hra uveďte funkci zobrazení počtu článků hada.

Teď se zaměříme na funkci zobrazení počtu článků hada. Při mnoha hrách je třeba uživateli sdělovat různé informace, jako je např. dosažené skóre. Nechceme-li se zobrazováním informací příliš zabývat, je dobrým a rychlým řešením vypisovat takové informace v nadpisu okna. My budeme sdělovat hráči dosaženou délku hada a případně maximální dosažené skóre. Při zobrazení počtu článků se budeme snažit alespoň trochu vyjadřovat česky, proto rozlišíme stavy "1 článek", "2...3...4 články" a "5...6... článků". Většina hráčů nám snad odpustí češtinářský prohřešek, když namísto "23 články" vypíšeme "23 článků". Ale kdo by chtěl dokonalost, může pomocí funkce modulo testovat poslední číslici čísla a skloňovat tak jak se má. Zde je obsah funkce:

Délka hada 0 se vyskytne vždy při zahájení nové hry. V této chvíli můžeme zobrazit informace o autorovi programu nebo později maximální skóre.

Na obrázku vidíte použitý nový prvek - nadpis okna (naleznete jej ve skupině ovládání , podskupina dialogy ). Prvek má charakter textové proměnné (lze jej nastavovat i číst), představující text na horní liště okna (titulek okna). Prvek sloučení textů slouží ke sloučení více textů do jednoho textu. Sloučení probíhá shora dolů. Běžný text je možné zadat zápisem textu u prvku textová konstanta . Prvek převod čísla na textový tvar převádí číslo na textové vyjádření čísla.

Podobně jsou sestaveny i větve pro ostatní délky hada. Všimněte si, že můžeme jednu větev větvicí konstrukce použít pro více hodnot délek.

Jedna poznámka k používání nadpisu okna. Při startu programu se v nadpisu okna objeví jméno hlavní funkce programu. Není-li potřeba během chodu programu nadpis okna měnit, stačí patřičně upravit jméno hlavní funkce. U nového programu je jméno hlavní funkce přednastaveno na jméno programu.

Dále se budeme zabývat hlavní smyčkou programu. Na konec hlavní funkce umístěte podmíněné opakování příkazů . Do testu podmínky dejte prvek ano , čímž změníte cyklus na nekonečný cyklus. Ukončení programu bude uskutečněno uvnitř obsluhy kláves jako reakce na klávesu Esc. Na začátku hlavní smyčky vytvoříme nejdříve obsluhu kláves, následuje obsluha pohybu hada a na závěr obsluha vytváření nových věcí (jídlo a jed). Posledním příkazem ve smyčce bude obsluha čekání zajišťující časování programu. Příkaz čekání můžete doplnit do smyčky již teď, ostatní obsluhy budeme doplňovat postupně.

.... dokončení příště


 

Stáhnout

Staženo 211x (319.84 kB)
Aplikace je včetně zdrojových kódů v jazyce Petr (jsou obsaženy v EXE souboru, který lze v programu přímo otevřít)

 

  Aktivity (1)

Článek pro vás napsal Panda38
Avatar
Programátor C++, WinAPI, ASM.

Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!


 


Miniatura
Předchozí článek
Jak na vlastní sprajty
Miniatura
Všechny články v sekci
Políčková grafika
Miniatura
Následující článek
Jak nakrmit hada (2. část)

 

 

Komentáře

Avatar
popon2
Člen
Avatar
popon2:

Potřebuju poradit. Jak lze udělat podmínku kde bude schodnost předmětu i sprajtu. Nechci přitom upravovat Petříka takže nevím jestli to někdo ví. Pls poraďte.

 
Odpovědět 2.3.2013 14:23
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 1 zpráv z 1.