Programujeme v Kodu Modul 1 – seznámení s Kodu a tvorba první hry Instalace programu – Program Kodu stáhneme z webové stránky, po stažení instalačního balíčku spustíme instalaci. Instalace je rychlá a jednoduchá. V případě, že počítač danou část neobsahuje, nemusíme se strachovat, protože Kodu je zvládne doinstalovat (nejspíš však bude potřeba náš souhlas s instalací). Takže instalaci máme hotovou a můžeme se vrhnout na tvorbu základních her.
Ukázka Kodu a vyzkoušení hry Pro první modul jsem připravil hru, která by se mohla nazvat “Soutěž v pojídání jablíček”. Cílem hry je nasbírat co nejvíce jablíček ve stanoveném čase 21O sekund (3,5 minuty – ideální na vyzkušení). Pokud hráč má nejvíce bodů, hru vyhrává a může se posunout do dalšího levelu (tato hra může sloužit jako program s vice minihrami – bude se zde ukládat postup učení žáka). Jak hra vypadá Hra bude mít podobu bazénku, ve kterém bude hráč hrát proti počítači. Hra bude tvořena 3 typy podloží
Vnější – Základní povrch – pokud zde spadne jablko, tak vybuchne Prostřední – Okraj a stěny arény – jablko se odrazí a spadne do arény Vnitřní – Dno arény – základní hrací plocha
Jak hru vytvořit Terénní úpravy (volitelné, doporučuji až doma, pro samotný běh ne zas tak důležité) Terénní úpravy nám řeší především technický problém s jablíček, které v několika případech mohou skončit I mimo hrací plochu. Jelikož je těchto jablíček minimum, nemusíme se obávat, že by nám to požitek ze hry nějak kazilo, jen se může občas stát, že se daný bot (NPC hráč) zasekne. Jak tedy vytvořit tuto arénu. Nejprve vytvoříme velkou plochu jednoho typu, tato plocha musí být větší, než bude hrací plocha – aréna. Uprostřed vytvoříme druhým typem další plochu, která bude dělat stěny arény, a uvnitř této plochy vytvoříme o pixel menší hrací plochu, celé toto barevné seskupení vytáhneme prvkem na tvorbu kopců, který se nachází vedle ikony Cesta
Dále musíme vytvořit arénu, tedy snížit celou vnitřní část dolů Musíme si dát pozor, abychom nesnížili i stěny arény.
Tímto je základní hrací aréna. Vzhledem k časové náročnosti doporučuji jen základní verzi -> pouze hrací arén a tuto vychytávku, ať si děti zkusí sami doma.
Základy práce s KODU
Používají se obě tlačítka myši Kolečkem se přibližuje/oddaluje ESC - přepíná mezi režimem hraní a upravování
Úprava terénu
Podržení levého tlačítka + tah - Posun po mapě Podržení pravého tlačítka + tah - otáčení mapou
Kliknutí levým přidává do označené oblasti terén Kliknutí pravým ho odebírá Pomocí levé a pravé šipky se mění velikost označené plochy Kliknutím do levé horní části ikony rozevře nabídku povrchů
Kliknutím do pravé horní části ikony rozevře nabídku možností generování povrchu
První dvě možnosti generují čtverec/kruh. Další dvě označují oblast tahem.
Vyhlazení povrchu
Zubatý terén Tvorba arény (základní hrací plocha) a postav Nám pro školící potřeby postačí jednoduchá plocha s pár NPC a hráčem – postup se pak opakuje.
Na této hrací ploše vytvoříme boty (NPC hráči). Osobně doporučuji motorky a také, aby hráč byl stejný jako NPC hráči. NPC hráče přidáme pomocí tlačítka Objekty, kde klikneme na místo, kam chceme NPC vytvořit a vybereme motorku.
Vytvoříme dvě motorky - hráč a NPC. Doporučuji hráče jinak obarvit. Provedeme to tak, že myší najedeme na objekt a šipkami doprava a doleva měníme barvy. Na výběr máme z palety barev, která je vidět v horní části obrazovky. Dalším vytvořeným prvkem bude světlo, které bude generovat jablíčka a samotné jablíčko. Můžeme generovat jablíčko přímo jako takové, ale my si vytvoříme klonovatelné jablíčko z důvodu použití kódu, který ponese a který se bude dále hodit, především při vytvořené aréně. Světlo najdeme v sekci Bots 2 a jablíčko pak ve výchozím zobrazení. Umístíme prvky na hrací plochu.
Objekty můžeme klidně nechat v tomto rozložení, pokud žák chce, může si je pak klidně přesunout.
Naprogramování postav Nyní si naprogramujeme jednotlivé postavy. Začneme s hráčem, tedy v našem případě černou motorkou. Klikneme pravým tlačítkem na tuto motorku a vybereme možnost naprogramovat.
Tímto jsme nastavili podmínku, tedy podnět, na který budeme reagovat. Reakcí zde bude pohyb motorky, která na daný vstup bude reagovat pohybem. Nastavíme to pomocí bloku Move, který najdeme v hlavní nabídce části programu Do.
Tímto blokem nastavíte, že se bude objekt pohybovat podle vstupu -> při stisku písmena D pojede objekt vpravo, apod. Dále nastavíme objekt tak, že při srážce s jablkem, jablko sní a zároveň připočte bod černé barvy. Pokud chceme vytvářet více řádků, které odkazují na jeden řádek, vytvoříme jej tak, že řádek pod tímto hlavním řádkem odsuneme -> chytíme jej a posuneme vpravo. POZOR: na tomhle řádku musíme nechat volnou podmínku (when). Pokud byste zde vložili podmínku, program by se zachoval tak, že by
provedl kód na odsunutém řádku pouze v případě, že by byly obě podmínky splněny. Tímto jsou pohyb a základní funkce (pojídání) připraveny na použití a lze s nimi už ovládat hru.
Obdobný kód bude u NPC hráče. Jedinou změnou zde bude pohybová část, která se nahradí za See a Move toward. Skóre zde má stejnou barvu, ale místo přičítání zde odčítáme. Důvod těchto změn si ukážeme na konci, kde budeme hru vyhodnocovat.
Dále nastavíme samotné jablíčko. Jablíčko musíme přepnout do režimu klonovatelnosti. Tuto možnost najdeme v nastavení objektu.
Kliknutím na vypínač tuto funkci spustíme. Jablíčko je poté zelené a hráči jej ve spuštěné hře neuvidí.
Editor hry Spuštěná hra
Tímto je jablíčko připravené na klonování, které se bude dělat pomocí světla. Takže naprogramujeme světlo Světlo ponese kód o tvorbě jablíček, náhodném pohybu, odčítání času a nastavení počátečního času. Pohyb: Je to činnost, která nemá podmínku, je tedy bez části Když (When). V části Do, bude Move a Wander, tedy náhodný pohyb, který není nijak omezen nějakou podmínkou, nějakým podmětem. Tvorba jablíček: Tvorba jablíček bude omezena podmínkou, která bude říkat, že se jablíčka budou generovat jednou za půl sekundy. Tento interval lze jednoduše změnit. Akcí tohoto kódu bude vytvoření
jablíčka. Pro interval použijeme Timer a generátor jablíček najdeme mezi Actions, Create a creatables a zde pak vybereme naše jablíčko Nastavení času: Nastavení času je další bezpodmínkový řádek, který se provede pouze jednou. Nastavení se provede pomocí Set score a navolením dané hodnoty. Argumentem, který zde bude použit, bude Once, který nám bude říkat, že se kód provede pouze jednou. Set score najdeme v sekci Game. Odčítání času: Pomocí Timer budeme každou sekundou odčítat z bílého skóre jeden bod. Tímto jsme nastavili časový limit hry.
Jak je vidět, pokud chceme navolit jiné hodnoty, než nám program nabízí, můžeme je naskládat do řádku za sebou, čímž je sečteme a získáme tak cílovou hodnotu. Pokud hru nyní spustíme, získáme základ naší hry. NPC hraje proti hráči a předhánějí se v tom, kdo nasbírá více jablíček. Ještě nám však chybí ukončení hry a vyhodnocení. Ukončení a vyhodnocení hry (pouze pro dva hráče, pro více hráčů příliš složité – žák to nezvládne) Ukončení hry se provede pomocí porovnání, které bude obsahovat světlo, aby bylo vše u sebe a žák nemusel skákat z jednoho objektu na druhý. Nejdříve tedy nastavíme ukončení hry, ukončení časomíry. Ukončení časomíry je vyvoláno podmínkou, tedy v bloku When (když) musíme zkontrolovat, zda je už časomíra na nule. Budeme používat bloky Score, Compare a číselné hodnoty. Jako výkonnou část programu budeme mít dva řádky, které nám vyhodnotí, zda jsme vítězi anebo poražení, takže potřebujeme dané dva řádky odsunout a udělat z nich podřádky pro hlavní podmínku. Vyhodnocení hry uděláme pomocí rozdílu bodů. Jak už při zkoušce poznáte, skóre se snižuje a zvyšuje podle toho, kdo sní jablíčko. Tímto obejdeme veškeré problémy, které jsou spojeny s porovnáváním hodnot. Pokud žák chce i složitější variantu, která bude řešit více hráčů o více různých skóre, bude si muset na ni počkat až do třetího modulu, kde se pokusím tento problém popsat. Porovnání samotné se provede tak, že v prvním odsunutém řádku se zeptáme, zda je skóre menší nebo
rovno nule. Pokud je to pravda, tak hra skončí neúspěchem. Pokud je však skóre vyšší jak nula, hra končí pro hráče úspěchem. Toto tedy bude další odsunutý řádek kódu. Nyní hru spustíme a vyzkoušíme. Zjistíme však, že hra nefunguje tak, jak má nebo jak by měla. Je to způsobeno tím, že skóre se nastaví později, než je hra vyhodnocena. Potřebujeme tedy nějaké časové zpoždění. Tohoto docílíme jednoduchým odsunutím našeho hlavního řádku a přiřadíme jej k časovači, který se nachází nad ním.
Tím je tedy hra naprogramována a pro tento modul hotova. Pro kreativní žáky Vytvořit arénu a nastavit, že pokud jablko skonči na vnějším povrchu, ať vybuchne (nápověda -> Combat, boom a pro povrch On land a tento kód se bude nacházet na jablíčku) Hrát proti více NPC Nastavit generování více jablíček najednou Nastavit možnost ovládání WASD a zároveň pomocí šipek Anebo si něco vymyslete sami Doufám, že je tutoriál srozumitelný a bude jednoduché podle něj děti vést. V případě dotazů piště na email
[email protected] Jan Rajnoha, Martin Dybal