Vnímání

Poslední základní oblastí příkazových bloků, které Scratch uživatelům nabízí je soubor bloků v sekci „Vnímání„. V této sekci lze najít bloky, které se typově nevešly do žádné jiné sekce. Je to taková všehochuť, která ovšem v programech umí být velmi důležitá. Přesto se ovšem nejedená o vyloženě dominantní samostatnou skupinu příkazů, spíše jde o užitečné bloky, kterými můžeme doplnit bloky z ostatních skupin a dodat jim tak novou zajímavou funkcionalitu. Vzhledem k této skutečnosti raději jejich fungování předvedu na příkladech, kterými se můžete inspirovat.

Dotýkání se barev

Ve skupině „Vnímání“ je možné najít bloky určené pro vnímání barev. Nejedná se o samostatně použitelné bloky, ale o bloky, které jsou použitelné pouze v kombinaci s podmínkovým příkazem (ostré konce blokových příkazů). Jedním z oblíbených a užitečných způsobů, jak lze tyto bloky využít je v kombinaci s detekcí barev (viz následující projekt).

V tomto projektu je pomocí bloků pro detekci barev (a ve spojení s podmínkovými příkazy) vyrobena demonstrační „hra“, kde si můžeme tuto vlastnost vyzkoušet. Tento program funguje jako obyčejné ovládání pohybu postavy pomocí klávesových událostí, ovšem s tím rozdílem, že je pro postavu naprogramované odlišné chování s ohledem na to, jaké barvy se postava dotýká (a to jakoukoliv částí plochy).

Použití bloků pro detekci barvy

Pokud si prohlédneme způsob konstrukce podmínky pro pohyb postavy v pravém směru, tak je možné popsat činnost této větve programu takto – Po stisku klávesy „šipka vpravo“ se postava pohne o deset bodů doprava. Poté otestuje jestli se dotýká černé barvy. Jestliže ano, zahraje určitý zvuk a couvne o deset bodů doleva. Celá akce je tak rychlá, že pro uživatele je v tomto případě vizuální dojem ten, že se postava vůbec nepohne z místa a pouze se ozve zvuk signalizující nevykonanou akci. Po podmínce detekující černou barvu (ať již se provede, či neprovede) se spustí druhá podmínka, kterou zase testujeme nedotýká-li se postava barvy červené. Pokud ano ozve se jiný zvuk – signalizující úspěch. Dotýká-li se postava červené barvy, není nijak omezována v pohybu.

Testování stavů myši

Pomýšlíme-li na programování her pomocí scratche, bude se nám jistě hodit, budeme-li schopni zjistit konkrétní stavy týkající se uživatelovy myši. Scratch nám v sekci „Vnímání“ umožňuje zjistit jednak polohu myši v souřadnicích x a y a pak také skutečnost, jestli je, či není, myš stisknuta. Všechny tyto stavy můžeme v programech využít v kombinaci s podmínkovými příkazy jako v následujícím příkladu v projektu akvarium.

Příkazy ze skupiny bloků „Vnímání“ jsou, proklikáte-li se ke kódu programu použity v postavách tlačítek, kdy umožňují programu testování tří poloh tlačítka – beze změny – po najetí myši – po kliknutí na tlačítko. Na každý tento stav je naprogramována reakce v podobě změny kostýmu a vyslání zprávy, která umožní spuštění pohybu ryb (funkci akvária). Tento příklad použití je samozřejmě velmi jednoduchý, naprogramovat se dají i složitější funkce. Princip fungování vícepolohového tlačítka bývá asi nejčastější.

Časové bloky

Skupina příkazů „Vnímání“ umožňuje programu práci s časem. Princip práce s časovými bloky je velmi jednoduchý. V rámci scratche funguje proměnná stopky/timer. Tato proměnná je permanentně spuštěná a permanentně vrací zpátky čas od spuštění stopek v milisekundách. Tento stav je možné uložit do jiné proměnné, kterou si deklarujete (v případě následujícího programu se jedná o proměnnou „time“). Tuto proměnnou po spuštění programu vynulujeme.

Program stopky

V programu můžeme využít stisku tří tlačítek – viz. popiska programu. Vybral jsem je, protože se jedná o klávesy, které jsou na klávesnici umístěné vedle sebe. Klávesou „S“ spustíme znovu stopky – dojde k vynulování proměnné stopky/timer a je vyslána zpráva stopky spustit. Na tuto zprávu se spustí smyčky, které překlápí kostýmy čísel symbolizující čas na hodinách. Prvé dvojčíslí ukazuje počet minut od spuštění stope, druhé počet sekund. Po šedesáti sekundách se překlápí minuta. Klávesou „D“ stopky zastavujeme, raději ji chvilinku přidržte, program má občas malinké zpoždění. Po stisku klávesy D dojde k vyslání zprávy stopky zastavit. Touto zprávou dojde k vložení aktuálního stavu proměnné stopky do proměnné time. Všimněte si, že stopky běží dál, ale v proměnné time je vložená hodnota stopnutého času. Kocour vám také naměřený čas i ohlásí. Klávesou „F“ pak můžeme „vynulovat“ kostýmy všech čísel na budíku, proměnnou time i stopky. Program je tak připravený na nové stopování času.

Přemísťování postav

Scratch umožňuje uživateli ovládat přemísťování postav myší v rámci režimu uchop a táhni (drag and drop). Režim se dá pomocí bloků povolit, nebo zakázat (blok „Povoleno přesouvat ano/ne„). Trošičku problematický je fakt, že povolení přesouvat jinak funguje v režimu úpravy a jinak, když je již kód publikovaný v režimu projektu. V režimu úpravy je možnost přesunu postav (prvků na scéně) ze zřejmých důvodů permanentně povolena. Programově povolované, nebo zakazované posouvání postav funguje teprve až v režimu prohlížení projektu, tudíž i pro testování je nutné prověřit program až v tomto režimu. Pro příklad jak je možno použít tyto bloky jsem vyrobil jednoduchou „puzzle“ skládačku obrazu Mony Lisy. Projekt naleznete zde.

Projekt monalisa je jednoduchou demonstrací, jak je možné vyrobit podobnou skládačku. V rámci jednoduchosti jsem vše vyrobil pouze ze čtyř čtvrtin známého obrazu. Aby byl úkol splněn je třeba části obrazu vložit na správná místa v ohraničené ploše. Primárně je přesouvání při startu programu zakázáno, povoleno je pouze pokud je stisknuto levé tlačítko myši na dané postavě. V okamžiku, kdy je přesouvaný díl vložen na správné místo (dané souřadnicemi xy o určité toleranci) přesune se přesně na správné místo a je mu zakázána možnost dalšího posouvání. Pokud nastane situace, že jsou všechny čtyři kusy obrazu na správném místě zahraje se „vítězná“ melodie a obraz je poskládán.

Závěrem…

Popsali jsme si čtyři varianty jak využít blokové příkazy ze skupiny příkazů „Vnímání„. Možností jak tyto příkazy používat je samozřejmě více, jistě vás již některé napadají. Ještě bych rád poukázal na zajímavé bloky výstupů proměnných pro souřadnice myši, hlasitost, nebo jméno uživatele a datumově/časové výstupy (tzv. časové razítko). Tyto proměnné by bylo možné ve spojení s nějakou cloudovou proměnnou dál použít například pro ukládání globálního skóre hry.

Dalším zajímavým blokem o kterým jsem se zmiňoval již dříve, konkrétně v projektu Hláskování je blok pro otázku a odpověď. Tento blok umožňuje vytvořit textovou bublinu, která je spojená s formulářovým okénkem pro odpověď. Text odpovědi, který do ní napíše uživatel je vložen do proměnné „odpověď“, kterou je možné dál zpracovávat v podobě textového výstupu, nebo pomocí podmínkového bloku jako možnost interakce mezi uživatelem a programem/hrou.

Úkoly:

1, Zkuste kocourovi vytvořit bludiště z čar. Mohou tam být třeba i barevné teleporty a podobně.

2, Vytvoř si vlastní stopky.

3, Zkus s pomocí bloků pro povolení a zákaz posunu naprogramovat skládání nějakého obrázku.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.