18. diel - Pohyb v Scratchi
V predchádzajúcom cvičení, Riešené úlohy k 11.-12. lekciu Scratche, sme si precvičili získané skúsenosti z predchádzajúcich lekcií.
Vo väčšine predošlých programov naše postavy iba stáli alebo urobili pár krokov nejakým smerom. Scratch nám ale ponúka oveľa viac možností pre pohyb postáv. Tie si v dnešnom tutoriále ukážeme a naučíme sa oživiť naše programy postavami, ktoré nie sú lenivé sa trochu pohnúť. Nakoniec vytvoríme hru na babu, pri ktorej využijeme bloky karty Pohyb.
Karta Pohyb
V predchádzajúcich lekciách sme sa už s niektorými blokmi z karty Pohyb stretli. To však boli iba bloky, ktoré umožňovali postavu trochu posunúť na scéne. Poďme sa bližšie pozrieť aj na ďalšie bloky, ktoré nám karta Pohyb ponúka. A naozaj ich nie je málo 🙂
Atribúty pohybu postáv
Ešte než sa pustíme do samotného popisovania blokov na karte
Pohyb, musíme najprv spomenúť, ako pohyb postáv funguje. Každá
postava má svoje hodnoty x
, y
a Směr
,
ktorých úpravou vytvárame ilúziu pohybu. Os X je horizontálna (pohyb zľava
doprava) a os Y je vertikálna (pohyb zhora nadol). Stredom osí je bod
[0;0]
, ktorý sa nachádza v strede okna výstupu. Smer potom
udáva otočenie postavy okolo svojej osi:
![Vlastnosti pohybu postavy - Scratch - Scratch](images/17303/scratch/scratch_pohyb_1.1.png)
Atribútu Směr
môžeme navyše nastaviť jeden z troch
režimov:
- Dookola – postava sa otáča presne podľa atribútu
Směr
(pokojne aj hore nohami), - Vľavo/vpravo – postava sa otáča doľava alebo doprava,
- Neotáčať – postava stále pozerá na východiskovú pozíciu a
atribút
Směr
ignoruje:
![Možnosti otáčania postavy - Scratch - Scratch](images/17303/scratch/scratch_pohyb_2.gif)
Hodnoty x
, y
a Směr
môžeme tiež
meniť ručne prepisovaním hodnôt pod výstupom programu:
![Zmena atribútov ručne - Scratch - Scratch](images/17303/scratch/scratch_pohyb_3.png)
Pohyb postáv budeme však vo väčšine prípadov chcieť zaistiť programovo, teda za behu programu. Poďme sa teda teraz pozrieť, aké bloky nám k rozpohybovaniu postáv pomôžu 😉
Blok dopredu o krokov
Tento blok zaistí, že sa postava posunie smerom, ktorým je natočená o
zadaný počet krokov. Počet krokov sa rovná počtu bodov na osi
x
:
![Blok dopredu o krokov - Scratch - Scratch](images/17303/scratch/scratch_pohyb_4.png)
Bloky otoč sa
Na otočenie postáv máme k dispozícii dva bloky. Tie otočia našu postavu buď v smere, alebo proti smeru hodinových ručičiek o zadaný počet stupňov:
![Blok otoč sa o stupňov - Scratch - Scratch](images/17303/scratch/scratch_pohyb_5.png)
Bloky skoč a šmýkaj
Blokom skoč na premiestnime postavu, zmeníme jej teda hodnoty osi X a Y. Novú pozíciu môžeme nastaviť ako náhodnú, určiť ju ukazovateľom myši alebo zadáme konkrétne súradnice:
![Blok skoč na - Scratch - Scratch](images/17303/scratch/scratch_pohyb_6.png)
Blok šmýkaj funguje podobne. Postava sa dá do pohybu v ústrety náhodným hodnotám, ukazovateľom myši alebo presne zadaným súradniciam. Ide o postupné presúvanie na určené miesto, pri ktorom navyše zadávame, ako dlho má trvať:
![Blok šmýkaj sekúnd na - Scratch - Scratch](images/17303/scratch/scratch_pohyb_7.png)
Blok nastav smer
Tu meníme otočenie postavy (hodnotu Směr
). Nový smer
určíme ukazovateľom myši alebo inou postavou, pokiaľ ich máme v projekte
viac. Ďalej môžeme zadať presný počet stupňov otočenia:
![Blok nastav smer - Scratch - Scratch](images/17303/scratch/scratch_pohyb_8.png)
Bloky zmeň/nastav x/y
Blok zmeň o vezme aktuálnu hodnotu x
alebo y
a pripočíta/odčítajte zadanú
hodnotu. Blok nastav na vezme aktuálnu hodnotu a
prepíše ju zadanou hodnotou:
![Blok nastav/zmeň x/x - Scratch - Scratch](images/17303/scratch/scratch_pohyb_9.png)
Blok keď narazíš na okraj, odraz sa
Blok zaistí, že naša postava nezajde mimo obraz, ktorý vidíme. Ak sa dotkne okraja, otočí sa smerom, odkiaľ prišla a zostane tu stáť:
![Blok keď narazíš na okraj, odraz sa - Scratch - Scratch](images/17303/scratch/scratch_pohyb_10.png)
Blok nastav otáčanie
Posledným blokom programovo nastavíme jeden z troch režimov atribútu
Směr
, o ktorých sme si hovorili vyššie:
![Blok nastav otáčania - Scratch - Scratch](images/17303/scratch/scratch_pohyb_11.png)
Premenné x
, y
a
směr
V spodnej časti karty Pohyb nájdeme ešte premenné s hodnotami atribútov pre danú postavu:
![Premenné x, y, smer - Scratch - Scratch](images/17303/scratch/scratch_pohyb_12.png)
Hra na babu
Poďme si teraz vytvoriť sľubovanú hru na babu. Po spustení hry klikneme na postavu (mačičiaka) a ten nás bude naháňať, tj bude sa snažiť dobehnúť kurzor našej myši. Keď nás chytia, bude rad na nás. Pretože je ale myš veľmi rýchla, bude sa náš mačičák teleportovať na náhodné miesta. My sa potom naň budeme snažiť kliknúť. Tým mu zase babu vrátime.
Ak by niekto namietal, že sa mačky neteleportujú, tak na to odpoviem, že väčšinou ani nehovoria. Spomeňme si, čo všetko už náš mačičák predtým dokázal 🙂
Začneme klasicky štartovým blokom, za ktorý umiestnime blok čakaj
kým nenastane. Z karty Vnímanie si požičiame blok
dotýkaš sa? a nastavíme mu hodnotu na ukazatele myši
.
Ďalej pridáme blok myš stlačená?. Oba vložíme do bloku
a z karty Operátory. Celú podmienku pridáme do bloku
čakaj kým nenastane:
.<>
Potom si vezmeme cyklus opakuj stále a do neho vložíme dva bloky opakuj kým nenastane. To celé nalepíme k predchádzajúcim blokom:
![Hlavný cyklus hry na babu - Scratch - Scratch](images/17303/scratch/scratch_pohyb_14.png)
Prvý vnorený cyklus bude obsahovať podmienku dotýkaš sa ukazovateľa myši? a do druhého cyklu pridáme rovnakú podmienku, ako ich v bloku čakaj kým nenastane na začiatku programu. Pomocou bloku av nej teda spojíme bloky dotýkaš sa? a myš stlačená?:
![Hlavný cyklus hry na babu s podmienkami - Scratch - Scratch](images/17303/scratch/scratch_pohyb_15.png)
Do prvého vnoreného cyklu za seba nalepíme bloky nastav smer k s
hodnotou ukazateli myši
a šmýkaj sekúnd na s hodnotami
1
(sekunda) a ukazatel myši
:
![Telo prvého podcykla - Scratch - Scratch](images/17303/scratch/scratch_pohyb_16.png)
Do druhého vnoreného cyklu vložíme bloky skoč na s hodnotou
náhodná pozice
a čakaj sekúnd s hodnotou
.5
:
![Telo druhého podcykla - Scratch - Scratch](images/17303/scratch/scratch_pohyb_17.png)
Ak chceme mať hru o niečo zložitejšie alebo jednoduchšie, môžeme v blokoch šmýkať sekúnd na a čakaj sekúnd hodnoty zväčšiť alebo zmenšiť 😉
Medzi cyklami ešte vložíme blok skoč na s hodnotou
náhodná pozice
:
![Blok medzi cyklami - Scratch - Scratch](images/17303/scratch/scratch_pohyb_18.png)
Nad každý cyklus potom umiestnime bublinu sekúnd s textami
Mám babu.
a A teď ji máš ty.
:
![Doplnenie textov a dokončenie programu - Scratch - Scratch](images/17303/scratch/scratch_pohyb_19.png)
Program máme hotový. Keď ho spustíme a klikneme na mačičiaka, začne s nami hrať na babu:
![Hra na babu - Scratch - Scratch](images/17303/scratch/scratch_pohyb_20.gif)
Celý kód hry na babu je ako vždy na stiahnutie pod článkom 🙂
V nasledujúcom kvíze, Kvíz - Zvuky, scéna a kostýmy v Scratchi, si vyskúšame nadobudnuté skúsenosti z predchádzajúcich lekcií.
Mal si s čímkoľvek problém? Stiahni si vzorovú aplikáciu nižšie a porovnaj ju so svojím projektom, chybu tak ľahko nájdeš.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkami
Stiahnuté 5x (42.59 kB)
Aplikácia je vrátane zdrojových kódov v jazyku Scratch