Komunitní projekt

Tento projekt vytvořil Erik se svou dcerou Ruth. Pokud chcete přispět svým nápadem, přidejte se k nám na Githubu.

Úvod

Tentokrát vytvoříme počítačovou hru! Postava ve scéně bude měnit barvy, úkolem hráče bude zapamatovat si barvy a zopakovat je ve správném pořadí. Kdo vydrží nejdéle, vyhrává!

Část 1: Náhodné barvy

Nejdřív je třeba vytvořit postavu, která bude měnit barvy.

Postup

  • Vytvoř nový projekt ve Scratchi a smaž kocoura tak, aby byl projekt prázdný. Webový scratch editor najdeš na jumpto.cc/scratch-new.

  • Vyber si pozadí scény a postavu. Postava nemusí být člověk, ale musí ji být jednoduché přemalovat na jinou barvu (musí mít kostýmy).

    screenshot

  • V naší hře budeme používat čísla zastupující jednotlivé barvy:

    • 1 = červená;
    • 2 = modrá;
    • 3 = zelená;
    • 4 = žlutá.

    Dej svojí postavě 4 různě barevné kostýmy, pro kažou zmíněnou barvu jeden (zkopíruj kostým a/nebo mu v editoru změň barvu). Zkontroluj, že jsou barvy kostýmů ve správném pořadí.

    screenshot

  • Pro náhodnou sekvenci budeš potřebovat seznam. Seznam je jednoduše proměnná, která si pamatuje více hodnot v určitém pořadí. Vytvoř novou proměnnou (Data - Vytvořit seznam), která se bude jmenovat sekvence. Seznam bude potřeba pouze pro postavu, zaklikni tedy volbu ‘Jen pro tuto postavu’.

    screenshot

    Teď by měl být vidět prázdný seznam ve scéně vlevo nahoře a k tomu spoustu nových bloků pro použití se seznamem.

    screenshot

  • Přidej k postavě následující blok kódu. Tím se k seznamu přidá náhodné číslo (také se přepne obleček), to se opakuje celkem 5 krát, jednou za vteřinu:

    po kliknutí na ⚑
zruš (všechno v) z [sekvence v]
opakuj (5) krát
   přidej (náhodné číslo od (1) do (4)) k [sekvence v]
   změň kostým na (prvek (poslední v) z [sekvence v])
   čekej (1) sekund
end

    Všimni si, že se začne tím, že se seznam vyprázdní.

Výzva: Přidej zvuk

Spusť projekt několikrát za sebou. Všimni si, že se občas stane, že to samé číslo je vybrané dvakrát (nebo víckrát) za sebou, takže je těžší si to správně zapamatovat. Dokážeš zahrát zvuk bubnu pokaždé, když se postavě změní kostým?

Dokážeš nechat zahrát různý zvuk bubnu, podle toho, jaké náhodné číslo bylo vybráno? Bude to velmi podobné kódu na změnu kostýmu.

Ulož svůj projekt

Část 2: Zopakování sekvence

Přidejme 4 tlačítka, která bude hráč mačkat, aby zopakoval sekvenci, kterou si zapamatoval.

Postup

  • Přidej do projektu 4 “postavy” bubnů, které budou sloužit, jako tlačítka. Nastav každému z nich jednu z našich 4 barev.

    screenshot

  • Když se klikne na červený buben, je třeba vyslat zprávu postavě, aby věděla, že bylo zmáčknuté čerené tlačítko. Přidej následující kus kódu k červenému bubnu:

    po kliknutí na mě
rozešli všem [červená v]

  • Když postava zprávu obdrží, musí zkontrolovat, že je na prvním místě v seznamu číslo 1 (to znamená, že je to červená). Pokud ano, odstraní ze seznamu první prvek, protože hráč uhádl správně. Pokud ne, tak je konec hry!

    po obdržení zprávy [červená v]
když <(prvek (1 v) z [sekvence v]) = [1]> tak
   zruš (1 v) z [sekvence v]
jinak
   říkej [Konec hry!] příštích (1) sekund
   zastav [všechno v]
end

  • Teď můžeš přidat efekt zablikáním světel, když je seznam prázdný, to znamená, že všechno bylo uhodnuto správně. Přidej tento blok kódu na konec skriptu when flag clicked u postavy:

    čekej dokud nenastane <(délka [sekvence v]) = [0]>
rozešli všem [výhra v] a čekej

  • Klikni do scény a přidej následující kód, pozadí pak bude měnit barvu, když hráč vyhrál.

    po obdržení zprávy [výhra v]
přehraj zvuk [drum machine v]
opakuj (50) krát
   změň efekt [barva v] o (25)
   čekej (0.1) sekund
end
zruš grafické efekty

Výzva: Vytvoř zbylá tlačítka

Zopakuj zmíněný postup i pro modré, zelené a žluté tlačítko. Jaký kód zůstane stejný a jaký se musí pro každé tlačítko upravit?

Také můžeš přidat pro každé tlačítko zvuk.

Nezapomeň pokažé úpravě kód spustit a otestovat! Dokážeš si zapamatovat sekvenci 5 barev? Je sekvence po každé jiná?

Ulož svůj projekt

Část 3: Obtížnost

Doteď si hráč musel zapamatovat 5 po sobě jdoucích barev. Pojďme hru vylepšit tak, že se bude zvyšovat počet barev k zapamatování.

Postup

  • Vytvoř novou proměnnou body.

    screenshot

  • Hodnotu body použijeme k určení délky sekvence, kterou si hráč musí zapamatovat. Na začátek nastavíme body (a tím déklu sekvence) na hodnotu 3. Přidej tento kód na začátek bloku po kliknutí na ⚑ u tvé postavy:

    nastav [body v] na [3]

  • Místo současné neměnné délky 5 teď chceme, aby body určovaly déklu sekvence. Změň smyčku opakuj u své postavy (vytváření sekvence) na:

    opakuj (body) krát
end

  • Pokud budou všechny barvy uhodnuty správně, přidáme jeden bod, tím prodloužíme sekvenci.

    změň [body v] o (1)

  • Ještě musíš přidat nekonečnou smyčku opakuj dokola kolem kódu pro generování sekvence, tak aby se vytvořila sekvence pro každou úroveň obtížnosti. Takhle by měl vypadat tvůj kód u postavy:

    po kliknutí na ⚑
nastav [body v] na [3]
opakuj dokola
   zruš (všechno v) z [sekvence v]
   opakuj (body) krát
      přidej (náhodné číslo od (1) do (4)) k [sekvence v]
      změň kostým na (prvek (poslední v) z [sekvence v])
      čekej (1) sekund
   end
   čekej dokud nenastane <(délka [sekvence v]) = [0]>
   rozešli všem [výhra v] a čekej
   změň [body v] o (1)
end

  • Zavolej kamarády, ať přijdou vyzkoušet tvou hru. Nezapomeň schovat okno seznamu sekvence než začnou hrát!

Ulož svůj projekt

Část 4: Bodový rekord

Pojďme body ukládat, abys mohl soutěžit s jinými hráči.

Postup

  • Do projektu přidej 2 proměnné, nazveme je rekord a jméno.

  • Pokaždé, když hra skončí (hráč zmáčknul špatné tlačítko), zkontroluj, jestli nahrané body nejsou vyšší, než to, co máme uložené. Pokud ano, ulož body jako rekord a ulož také jméno hráče. Tady je, jak by měl vypadat skript u tvého červeného tlačítka:

    po obdržení zprávy [červená v]
když <(prvek (1 v) z [sekvence v]) = [1]> tak
   zruš (1 v) z [sekvence v]
jinak
   říkej [Konec hry!] příštích (1) sekund
   když <(body) > (rekord)> tak
      nastav [rekord v] na (body)
      ptej se [Rekord! Jak se jmenuješ?] a čekej
      nastav [name v] na (odpověď)
   end
   zastav [všechno v]
end

  • Tento kód musíš také vložit ke zbývajícím 3 tlačítkům! Všimnul(a) sis, že kód pro ‘Konec hry’ je stejný u všech 4 tlačítek?

    screenshot

  • Když se rozhodneš upravit část kódu, jako třeba zvuk nebo nápis ‘Konec hry’, budeš to muset udělat 4-krát! To může být otrava a ztráta spousty času.

    Místo toho si raději vytvoříme vlastní blok a použijeme ho v našem projektu. Klikni na Nové bloky a potom ‘Vytvořit blok’. Tento nový blok nazveme ‘Konec hry’.

    screenshot

  • Zkopíruj kód z větve jinak z bloku u červeného tlačítka do nového bloku:

    screenshot

  • Právě jsi vytvořil(a) novou funkci nazvanou Konec hry, Kterou můžeš použít, kdekoliv budeš potřebovat. Přetáhni nový blok Konec hry do kódu všech 4 tlačítek.

    screenshot

  • Teď přidej zvuk, který zazní, když se zmáčkne špatné tlačítko. Tentokrát stačí přidat kód pouze jednou do bloku Konec hry a už ne 4-krát samostatně, hurá!

    screenshot

Výzva: Vytvoření více bloků

Všimnul(a) sis nějaké další části kódu, která je stejná u všech 4 tlačítek?

screenshot

Dokážeš udělat další nový blok, který budou tlačítka používat?

Ulož svůj projekt

Výzva: Jiný kostým

Všimnul(a) sis, že hra začíná s postavou ukazující jednu barvu a také, že když hráč zadává sekvenci, zůstává zobrazená poslední barva?

Dokážeš přidat postavě další, čistě bílý kostým, který se ukáže na začátku hry a během toho, co se hráč snaží zadat sekvenci?

screenshot

Ulož svůj projekt

Výzva: Obtížnost

Dokážeš nechat hráče zvolit mezi ‘easy mode’ (pouze červený a modrý buben) a ‘normal mode’ (všechny 4 bubny)?

Klidně můžeš přidat ‘hard mode’, který bude s 5. bubnem!

Ulož svůj projekt