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:
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:
Hodnoty x
, y
a Směr
môžeme tiež
meniť ručne prepisovaním hodnôt pod výstupom programu:
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
:
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:
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 š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 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:
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 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 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:
Premenné x
, y
a
směr
V spodnej časti karty Pohyb nájdeme ešte premenné s hodnotami atribútov pre danú postavu:
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:
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á?:
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
:
Do druhého vnoreného cyklu vložíme bloky skoč na s hodnotou
náhodná pozice
a čakaj sekúnd s hodnotou
.5
:
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
:
Nad každý cyklus potom umiestnime bublinu sekúnd s textami
Mám babu.
a A teď ji máš ty.
:
Program máme hotový. Keď ho spustíme a klikneme na mačičiaka, začne s nami hrať na babu:
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