Program | Zadání v krocích | Zadání formou úkolu
Příběh hry
Jsi kosmonautem vyslaným do vesmíru a tvým úkolem je posbírat 20 vesmírných zvířátek, poté se můžeš vrátit zpátky na Zem. Ale pozor na zlého obra, když kosmonautovi sebere všechny životy, zůstane navždy uvězněn ve vesmíru.
Cíl hry
Žák se seznámí s relačním operátorem (je rovno), čekáním s danou podmínkou a cyklem s danou podmínkou.
Vstupní požadavky na žáka
- Algoritmizace: posloupnost příkazů, reakce na vstup uživatele, nekonečný cyklus, neúplná podmínka, proměnná
- Scratch: události klávesnice, událost po startu, práce s postavami a pozadím, velikost postavy, pohyb postavy pomocí šipek, náhodná pozice, opakuj stále, podmínka když, vyhodnocení dotyku, práce s proměnnou, samovolný pohyb postavy, skrývání a ukazování postav
Nové dovednosti
- Algoritmizace: relační operátor (je rovno), čekáním s danou podmínkou, cyklus s danou podmínkou
- Scratch: operátor porovnání, čekej dokud nenastane, opakuj dokud nenastane
Zadání pro žáky v krocích
- Vyber vesmírné pozadí.
- Přidej postavu kosmonauta, uprav jeho velikost a zajisti jeho pohyb na šipky.
- Přidej postavy vesmírných zvířátek (Giga, Pico, Nano, Tera) a zajisti jejich samovolný pohyb. Doporučení: Samovolný pohyb by bylo lepší naprogramovat stejným způsobem jako v minulém úkolu s balónky (nastavení směru a neustálý pohyb), protože následně budeš mít díky tomu jednodušší situaci.
- Poté co je zvířátko chyceno kosmonautem započítá se bod. Nápověda: Musíš ošetřit, aby se bod přidal jen jeden za každé chycení.
- Když kosmonaut chytí 20 zvířátek může se vrátit na zem, zvířátka už se dále nezobrazují a nelze je chytat. Nápověda: Bude se hodit příkaz čekej dokud nenastane.
- Kosmonaut má omezené množství životů a ve vesmíru je „škodič“, který jej o ně chce připravit, pokud se mu to povede dřív, než kosmonaut zvládne posbírat zvířátka musí uznat svou prohru. Nápověda: Mohl by tě zajímat příkaz opakuj dokud nenastane.
- Bonusové úkoly:
- Zvířátka se pohybují náhodnou rychlostí.
- Jednou za čas se ve hře objeví prvek, který kosmonautovi život přidá.
Zadání pro žáky ve formě úkolu
- Kosmonaut ve vesmíru musí posbírat 20 vesmírných zvířátek, která tam žijí a samovolně se pohybují.
- Poté co jich 20 uloví může se vrátit na zem.
- Kosmonaut má omezené množství životů a ve vesmíru je škodič, který jej o ně chce připravit, pokud se mu to povede dřív, než kosmonaut zvládne posbírat zvířátka musí uznat svou prohru.
- Bonusové úkoly:
- Zvířátka se pohybují náhodnou rychlostí.
- Jednou za čas se ve hře objeví prvek, který kosmonautovi život přidá.
Řešení a metodické poznámky
- Vybereme vesmírné pozadí.
- Přidáme postavu kosmonauta, upravíme jeho velikost, umístíme ho do popředí a zajistíme jeho pohyb na šipky.
- Přidáme postavy vesmírných zvířátek (příšerky: Giga, Pico, Nano, Tera), upravíme jejich velikost, zajistíme start na náhodné pozici. (Poznámka: kdyby postavy nestartovaly na náhodné pozici, vyhodnotily by se změny bodů/životů hned po startu, protože by se mohlo stát, že by postavy začaly všechny na jednom místě.) Následně vytvoříme samovolný pohyb. Pohyb již umíme udělat dvěma způsoby
- Klouzáním (tato varianta pro daný program není úplně ideální, protože poté nám to bude trochu komplikovat situaci při zajištění, aby se body za chycení nepřidaly vícekrát. Nicméně to není neřešitelný problém.
- Nastavením náhodného směru (nastav směr náhodné číslo) a následným pohybem vpřed a zajištěním, aby se postava odrážela od okrajů. (Stejně jako u předchozího úkolu s balónky.) Tato varianta je vhodnější pro usnadnění dalšího programování.
- Založíme proměnnou počítající, kolik zvířátek už kosmonaut chytil a zajistíme, aby se vždy při chycení zvířátka přičetl bod. Podmínka se nachází u zvířátek z důvodu, abychom mohli zajistit, že zvíře nebude chyceno vícekrát na jeden dotyk, úplně nejjednodušší variantou je chycené zvíře posunout na náhodnou pozici, ale můžeme použít i např. čekání nebo skrytí a následné ukázání. Nicméně skrývat a ukazovat zvířátka příliš nedoporučuji, protože to by nám opět zkomplikovalo situaci při návratu na zem. Poznámka: pokud se zvířátka pohybují klouzáním, musí být podmínka pro chycení a přičtení bodů v samostatném nekonečném cyklu, zároveň je vhodné po chycení buď chvíli počkat nebo zvířátko na chvíli skrýt a pak ukázat, aby se nepřičetlo více bodů naráz.
- Návrat na Zemi: (programujeme ke kosmonautovi)
- Přidáme pozadí návratu na Zemi.
- Počkáme dokud nenastane počet chycených zvířat = 20 (čímž zavádíme dvě nové věci čekej dokud nenastane a operátor porovnání hodnot)
- Změníme pozadí a kosmonaut prohlásí “Vyhrál jsem”. (bublina)
- U ostatních postav přidáme: Po změně pozadí skryj se. A naopak po startu se musí ukázat.
- Zároveň musíme po startu hry příkazem přepni pozadí definovat, kterým pozadím hra začíná.
- Totéž by bylo možné naprogramovat i pomocí nekonečného cyklu s podmínkou. (Opakuj stále když Vesmírná zvířátka = 20)
- Škodící postava:
- Založíme další proměnnou “životy”, kterou nastavíme na jiné číslo než 0. (Poznámka: Tato hodnota udává, kolik životů pro hru budeme mít.) Proměnnou ukážeme.
- Přidáme postavu, která bude zlá a bude životy ubírat, její pohyb funguje stejně jako u vesmírných zvířátek. Nicméně místo opakuj stále můžeme využít příkaz opakuj dokud nenastane, více je popsáno níže. Zároveň nezapomeneme na úpravu velikosti, aby byla po startu vidět, a start na náhodné pozici.
- Přidáme pozadí pro prohru.
- Vyhodnocení prohry: Pro vyhodnocení prohry existují minimálně 3 možnosti.
- Opakuj dokud nenastane životy = 0: místo nekonečného cyklu použijeme opakuj dokud nenastane, tento příkaz funguje tak, že dokud není splněna podmínka, děje se činnost uvnitř cyklu, tedy v našem případě pohyb a ubírání životů. Ve chvíli, kdy životy = 0 program z cyklu vyskočí a dějí se příkazy pod ním, což je změna pozadí a skrytí postavy. Kosmonaut po změně scény (prohra) řekne “Prohrál jsem”. A zvířátka se po změně této scény skryjí. Tato varianta mi přijde nejelegantnější a zároveň žáci mají možnost seznámení s dalším příkazem.
- Čekej dokud nenastane životy = 0: cyklus pro pohyb je v tomto případě nekonečný. U škodící postavy nebo u kosmonauta přidáme nové Po startu (zelená vlaječka) čekej dokud nenastane životy = 0 a opět změníme pozadí, zajistíme, aby zvířátka a „škodič“ byli skrytí a kosmonaut řekl “Prohrál jsem”.
- Opakuj stálekdyž životy = 0: můžeme využít i nekonečný cyklus s podmínkou když.
- Opakuj dokud nenastane životy = 0: místo nekonečného cyklu použijeme opakuj dokud nenastane, tento příkaz funguje tak, že dokud není splněna podmínka, děje se činnost uvnitř cyklu, tedy v našem případě pohyb a ubírání životů. Ve chvíli, kdy životy = 0 program z cyklu vyskočí a dějí se příkazy pod ním, což je změna pozadí a skrytí postavy. Kosmonaut po změně scény (prohra) řekne “Prohrál jsem”. A zvířátka se po změně této scény skryjí. Tato varianta mi přijde nejelegantnější a zároveň žáci mají možnost seznámení s dalším příkazem.
- Poznámka: Pokud jsme některé postavy v průběhu hry skrývali, musíme zajistit, aby ještě neproběhlo jejich skrytí a zobrazení v rámci podmínky s dotykem, i když už máme změněnou scénu. Možností je více, nejjednodušší však je po změně scény ještě chvíli počkat a až poté postavu definitivně skrýt.
- Bonusové úkoly:
- Náhodnou rychlost zvířátek zajistíme pomocí náhodného čísla umístěného do prostoru určeného pro počet kroků, o které se má zvířátko posunout.
- Přidáme další předmět, který bude přidávat životy. Tento předmět je skrytý a zobrazí se vždy jen na krátkou chvíli na náhodném místě. Pokud jej kosmonaut stihne sebrat přičte se mu jeden život.
Možné problémy a komplikace
- Postavy se pohybují hlavou vzhůru – není nastaven způsob otáčení vlevo-vpravo.
- Body za chycení zvířátka jsme dostali vícekrát – tato situace není ošetřena například přemístěním zvířátka na náhodnou pozici po chycení nebo chvilkovým vyčkáním.
- Po změně scény zvířátka nebo zlá postava stále běhají – není nastaveno jejich skrytí po změně scény nebo se skrývají a následně ukazují i v průběhu chytání. Tedy se po chycení skryla, scéna se změnila, ale jim uplynul čas pro ukázání. V tomto případě to musíme ošetřit například tím, že po změně scény dáme ještě chvíli prodlevu a až poté zvířátka skryjeme, aby se stihla ukázat a zase skrýt. (Z tohoto důvodu není doporučeno je skrývat v průběhu.)
- Postavy se po startu neukázaly – chybí příkaz po startu ukaž se.
- Program začal s pozadím “Město” nebo “Vesmírné město” – chybí příkaz po startu změň pozadí na “Vesmír”.
- Program přidal mnoho bodů/ubral životy hned po startu hry – chybí umístění postav po startu na náhodné pozice.
- Postavy se neustále zmenšují nebo zvětšují – není upravena procentuální velikost, ale použit příkaz změň velikost o a kvůli tomu jsou postavy po každém startu větší nebo menší.