Lekce – cykly, animace a kostýmy
|Jednu ze základních programátorských konstrukcí tvoří cykly. Cykly opakují část kódu stále dokola. Cykly se často používají pro animace, tedy plynulé posouvání či otáčení postav po scéně. Pro animace se též používá střídání kostýmů postavy.
Co budeme dělat?
Tady se podívejte, jaký program budeme vytvářet. Netopýr bude létat z jedné strany obrazovky na druhou a přitom mávat křídly.
Teď se postupně naučíme, co budeme k tomu potřebovat.
Nekonečný cyklus
Jednoduchý cyklus jsme již použili v minulé lekci. Je to cyklus OPAKUJ DOKOLA, neboli též nekonečný cyklus. Nekonečný proto, že tento příkaz nikdy neskončí, program se v něm točí stále dokola. Všimněte si, že není možné za tento příkaz připojit nic dalšího (chybí tam pacička).
Ještě trocha pohybu
Podíváme se na další příkazy pro pohyb, které se často používají v cyklech. Kromě příkazu NASTAV X,Y NA – (o kterém jsme mluvili minule a který přesune postavu na konkrétní souřadnice na scéně) existuje příkaz ZMĚŇ X,Y O –. Tento příkaz změní aktuální Xovou či Ynovou souřadnici o zadanou hodnotu. Nezadáváte tedy konkrétní polohu, ale změnu vzhledem k místu, kde se postava právě nachází.
Pohyb v cyklu – základ animace
Založíme si nový projekt.Přidáme do něj z knihovny postavu netopýra a smažeme postavu chodící kočky (jak to uděláte najdete v článku Postavy).
A pro netopýra napište jednoduchý scénář.
Zkuste ho spustit, netopýr plynule odjede k pravému okraji, kde se zarazí.Co se ale vlastně děje. Zkuste si program zpomalit, přidejte na konec cyklu příkaz . Přetáhněte netopýra myší zpět doprostřed a program znovu spusťte. Netopýr jede, ale skokově, vždy přeskočí o 10 bodů, vteřinu počká, skočí o další 10 bodů, zase počká…. A to je základ animace ve Scratchi. Postavou vždy pohneme o malý kousek, a když to děláme rychle za sebou, pohyb vypadá plynule. Cyklus proběhne 24x, než se netopýr dostane k pravému okraji (24×10=240, souřadnice X=240 je pravý okraj). Kdybychom rovnou napsali příkaz NASTAV X NA 240, netopýr se dostane na stejné místo, ale rovnou tam skočí, neuvidíme plynulý pohyb.
Cyklus OPAKUJ – KRÁT
Nyní musíme vyřešit, jak udělat to, aby se netopýr otočil, když dojede k okraji a jela zpátky. U dalšího okraje se zase otočí a tak pořád dokola. Na to použijeme jiný druh cyklu. Jde o cyklus OPAKUJ – KRÁT, který jako parametr dostává číslo, kolikrát se má zopakovat (například opakuj 10x). Pak skončí a kód pokračuje dále (všimněte si, že má dole pacičku, takže za něj můžeme připojit další příkazy).
A teď napište netopýrovi takovýto scénář.
Všimněte si
- úplně na začátku provádíme počáteční nastavení (neboli inicializace). Aby netopýr začínala vždy na stejném místě a nemuseli jsme ji myší vracet.
- inicializace umístí netopýra k levému okraji
- Vytvoříme cyklus OPAKUJ 48 KRÁT. V každém kroku cyklu se posuneme o 10. 48×10=480, což je přesně šířka obrazovky – viz Scéna.
- Pod ním vytvoříme ještě jeden stejný cyklus, jen se budeme pohybovat v opačném směru o minus 10. Netopýr poletí zpátky
- A tyto 2 cykly obalíme nekonečným cyklem, aby se vše opakovalo stále dokola. Netopýr tedy přeletí tam, zpátky a to celé pořád dokola. Říká se tomu vnořený cyklus, neboli cyklus uvnitř jiného cyklu (v našem případě dva KRÁT cykly uvnitř nekonečného cyklu.
Netopýr nám lítá tam a zpět, ale pořád kouká jedním směrem.
Práce se směrem postavy
O směru postavy a stylu otáčení postavy s nejprve přečtěte ve Vlastnostech postavy. Nyní zajistíme, aby se netopýr, když letí doleva, koukal doleva. Použijeme k tomu příkaz NATOČ SE SMĚREM – a NASTAV ZPŮSOB OTÁČENÍ NA – . Upravte skript takto:
Všimněte si
- Příkazu pro nastavení směru NATOČ SE SMĚREM – vždy před cyklem, který vykonává pohyb příslušným směrem. 90 doprava a -90 doleva.
- V inicializaci je příkaz NASTAV ZPŮSOB OTÁČENÍ NA (jen vlevo-vpravo). Tím říkáme, že se netopýr má překlápět a ne otáčet. Schválně zkuste tento příkaz vynechat, netopýr poletí zpět vzhůru nohama.
Mávání křídly – kostýmy
Jedna postava může mít více kostýmů – obrázků. Postava netopýra z knihovny má 2 kostýmy, podívejte se na záložku kostýmy. Kostýmy se využívají k animaci postavy, rychlým střídáním kostýmů u netopýra dosáhneme efektu mávání křídel. Přečtěte si podrobně o kostýmech v článku Postavy.
K netopýrovi přidejte následující scénář (ten původní nechte, přidejte druhý začátek kliknutí na vlajku)
Všimněte si
- Příkazu DALŠÍ KOSTÝM, který stále dokola v cyklu střídá netopýrovi kostým.
- Cyklus je zpomalený, aby křídla mávala o něco pomaleji. Před každým mávnutím čeká 0.1 sekundy.
- Scénář netopýra má nyní dvě nezávislé části. Jedna v cyklu zajišťuje posun postavy. A druhá zajišťuje mávání křídel. A proč vše není v jednom cyklu? Protože cyklus mávání křídel je zpomalený, je tam příkaz čekej. Scénáře mohou mít libovolné množství zároveň běžících částí.
A nakonec přiřaďte do scény nějaké pěkné pozadí, ať netopýr nelétá po bílém papíře.
Závěr
Tak a to je pro tuto lekci vše. Netopýr se již chová jako v našem příkladu. Najdete ho zde:
https://scratch.mit.edu/projects/122248714/
[alert-success]Ověřte si své znalosti na tomto cvičení.[/alert-success]