Lekce 18 - Pohyb ve Scratchi
V předešlém cvičení, Řešené úlohy k 15.-17. lekci Scratche, jsme si procvičili nabyté zkušenosti z předchozích lekcí.
Ve většině předešlých programů naše postavy jenom stály nebo udělaly pár kroků nějakým směrem. Scratch nám ale pro pohyb postav nabízí mnohem více možností. Ty si v dnešním tutoriálu ukážeme a naučíme se oživit naše programy postavami, které nejsou líné se trochu pohnout. Nakonec vytvoříme hru na babu, při níž využijeme bloky karty Pohyb.
Karta Pohyb
V předchozích lekcích jsme se již s některými bloky z karty Pohyb setkali. To však byly jen bloky, které umožňovaly postavu trochu posunout na scéně. Pojďme se blíže podívat i na další bloky, které nám karta Pohyb nabízí. A opravdu jich není málo 🙂
Atributy pohybu postav
Ještě než se pustíme do samotného popisování bloků na kartě
Pohyb, musíme nejprve zmínit, jak pohyb postav funguje. Každá
postava má své hodnoty x
, y
a Směr
,
jejichž úpravou vytváříme iluzi pohybu. Osa X je horizontální (pohyb
zleva doprava) a osa Y je vertikální (pohyb seshora dolů). Středem os je bod
[0;0]
, který se nachází ve středu okna výstupu. Směr potom
udává otočení postavy kolem své osy:
Atributu Směr
můžeme navíc nastavit jeden ze tří
režimů:
- Dokola – postava se otáčí přesně podle atributu
Směr
(klidně i vzhůru nohama). - Vlevo/vpravo – postava se otáčí doleva nebo doprava.
- Neotáčet – postava pořád kouká na výchozí pozici a atribut
Směr
ignoruje.
Hodnoty x
, y
a Směr
můžeme také
měnit ručně přepisováním hodnot pod výstupem programu:
Pohyb postav budeme však ve většině případů chtít zajistit programově, tedy za běhu programu. Pojďme se tedy nyní podívat, jaké bloky nám k rozpohybování postav pomohou 😉
Blok dopředu o kroků
Tento blok zajistí, že se postava posune směrem, kterým je natočena, o
zadaný počet kroků. Počet kroků se rovná počtu bodů na ose
x
:
Bloky otoč se
K otočení postav máme k dispozici dva bloky. Ty otočí naši postavu buď po směru, nebo proti směru hodinových ručiček o zadaný počet stupňů:
Bloky skoč na a klouzej
Blokem skoč na přemístíme postavu, změníme jí tedy hodnoty osy X a Y. Novou pozici můžeme nastavit jako náhodnou, určit ji ukazatelem myši nebo zadáme konkrétní souřadnice:
Blok klouzej funguje podobně. Postava se dá do pohybu vstříc náhodným hodnotám, ukazateli myši nebo přesně zadaným souřadnicím. Jde o postupné přesouvání na určené místo, u něhož navíc zadáváme, jak dlouho má trvat:
Blok nastav směr k
Zde měníme otočení postavy (hodnotu Směr
). Nový směr
určíme ukazatelem myši nebo jinou postavou, pokud jich máme v projektu
více. Dále můžeme zadat přesný počet stupňů otočení:
Bloky změň/nastav x/y
Blok změň o vezme aktuální hodnotu
x
nebo y
a přičte/odečte zadanou
hodnotu. Blok nastav na vezme aktuální hodnotu a
přepíše ji zadanou hodnotou:
Blok když narazíš na okraj, odraz se
Blok zajistí, že naše postava nezajede mimo obraz, který vidíme. Pokud se dotkne okraje, otočí se směrem, odkud přišla, a zůstane zde stát:
Blok nastav otáčení
Posledním blokem programově nastavíme jeden ze tří režimů atributu
Směr
, o kterých jsme si říkali výše:
Proměnné x
, y
a
směr
Ve spodní části karty Pohyb najdeme ještě proměnné s hodnotami atributů pro danou postavu:
Hra na babu
Pojďme si nyní vytvořit slibovanou hru na babu. Po spuštění hry klikneme na postavu (kočičáka) a ten nás bude honit, tj. bude se snažit dohonit kurzor naší myši. Až nás chytí, bude řada na nás. Protože je ale myš moc rychlá, bude se náš kočičák teleportovat na náhodná místa. My se pak na něj budeme snažit kliknout. Tím mu zase babu vrátíme.
Pokud by někdo namítal, že se kočky neteleportují, tak na to odpovím, že většinou ani nemluví. Vzpomeňme si, co všechno už náš kočičák dříve dokázal 🙂
Začneme klasicky startovním blokem, za který umístíme blok čekej
dokud nenastane. Z karty Vnímání si půjčíme blok
dotýkáš se? a nastavíme mu hodnotu na ukazatele myši
.
Dále přidáme blok myš stisknuta?. Oba vložíme do bloku a
z karty Operátory. Celou podmínku přidáme do bloku čekej dokud
nenastane:
Poté si vezmeme cyklus opakuj stále a do něj vložíme dva bloky opakuj dokud nenastane. To celé nalepíme k předchozím blokům:
První vnořený cyklus bude obsahovat podmínku dotýkáš se ukazatele myši? a do druhého cyklu přidáme stejnou podmínku, která je v bloku čekej dokud nenastane na začátku programu. Pomocí bloku a v ní tedy spojíme bloky dotýkáš se? a myš stisknuta?:
Do prvního vnořeného cyklu za sebe nalepíme bloky nastav směr k
s hodnotou ukazateli myši
a klouzej sekund na s hodnotami
1
(sekunda) a ukazatel myši
:
Do druhého vnořeného cyklu vložíme bloky skoč na s hodnotou
náhodná pozice
a čekej sekund s hodnotou
.5
:
Pokud chceme mít hru o něco složitější nebo jednodušší, můžeme v blocích klouzej sekund na a čekej sekund hodnoty zvětšit nebo zmenšit 😉
Mezi cykly ještě vložíme blok skoč na s hodnotou
náhodná pozice
:
Nad každý cyklus pak umístíme bublinu sekund s texty
Mám babu.
a A teď ji máš ty.
:
Program máme hotový. Když jej spustíme a klikneme na kočičáka, začne s námi hrát na babu:
Celý kód hry na babu je jako vždy ke stažení pod článkem 🙂
V příští lekci, Vnímání ve Scratchi, si popíšeme bloky z kategorie Vnímání. Vysvětlíme si, k čemu jednotlivé možnosti slouží, a některé z nich využijeme při tvorbě programu, v němž si zahrajeme s kočičákem na schovávanou.
Měl jsi s čímkoli problém? Stáhni si vzorovou aplikaci níže a porovnej ji se svým projektem, chybu tak snadno najdeš.
Stáhnout
Stažením následujícího souboru souhlasíš s licenčními podmínkami
Staženo 7x (42.59 kB)
Aplikace je včetně zdrojových kódů v jazyce Scratch