Jsme zpátky u Winstona.
Jeho polohu určujeme pomocí proměnných x a y.
Můžeme ho tedy posouvat do stran, nahoru i dolů!
Pěkné.
Pojďme teď vrátit hodnoty proměnných na 200 a 200.
Ukážeme si, jak tento program vlastně funguje.
Na začátku máme proměnnou eyeSize.
Ta se používá k ovládání velikosti očí.
Ty mají 40 pixelů na šířku i na výšku.
Pak tady máme proměnné x a y.
Ty určují střed Winstonovy tváře.
Jak můžete vidět,
používáme je ve vlastnostech elipsy, která vykresluje velký žlutý kruh.
Pro vykreslení očí opět používáme proměnné x a y.
Tady vidíme, že oči jsou umístěny v návaznosti na střed tváře.
Toto je umístěno 50 pixelů nalevo od středu.
A toto je umístěno 100 pixelů napravo od středu.
Díky tomu můžeme pohybovat Winstona nahoru a dolů.
Nyní bych chtěla ovládat více vlastností Winstonovy tváře.
A to pomocí proměnných.
Čili chci zjistit, pro co další v programu můžu proměnnou použít.
Abych to zjistila,
projedu každý řádek kódu a zkusím najít tzv. napevno zakódována čísla.
To jsou čísla, která nejsou vyjádřená pomocí proměnné.
Začneme tady u první elipsy.
Pro šířku a výšku tu máme hodnoty 300 a 300.
Jsou to čísla.
Pojďme z nich udělat proměnnou.
Nazveme ji faceSize, tedy velikost obličeje.
Dáme jí hodnotu 300.
Nyní napíšeme faceSize a faceSize.
Barvy přeskočíme.
Všechny vlastnosti této elipsy jsou nyní proměnné nebo závislé na proměnných.
Zatím je tak ponechám.
První dvě vlastnosti pusy jsou závislé na proměnných x a y.
Ale tyto hodnoty jsou zase čísla.
150 a 150.
Zavedeme si tedy proměnnou mouthSize, tedy velikost úst.
A bude se rovnat 150.
Obě čísla nahradíme mouthSize.
Teď máme velikosti tvarů uloženy v proměnných hned na začátku.
To znamená, že můžeme velice jednoduše upravovat velikost.
Takhle.
Winston má hlad!
Winston má hlad, proto sní hodně koblih a teď je hrozně velký!
Na tomto programu se mi ale něco nelíbí.
Když hodnotu faceSize opravdu hodně zmenším,
začne to vypadat vtipně.
Protože oči a ústa vystupují z tváře.
A v určitém bodě už ani nevypadají jako součást tváře.
Už se ani nejedná o tvář.
Chtěla bych, aby při změně faceSize došlo i ke změně úst a očí.
V případě, že faceSize zmenším o polovinu,
chci mít ústa taky o polovinu menší.
To znamená,
že chci vypočítat mouthSize a eyeSize jako zlomky faceSize.
Vrátíme původní hodnoty proměnných.
Hned vám ukážu, co mám na mysli.
Začneme s mouthSize.
Momentálně je hodnota faceSize 300.
A hodnota mouthSize je 150.
Budeme-li uvažovat o nich ve vztahu k sobě,
uvidíme, že faceSize je dvakrát větší než mouthSize.
Nebo že mouthSize je o polovinu menší než faceSize.
Náš kód můžeme přepsat takhle:
1/2 krát faceSize.
Čili tento řádek kódu říká,
že vezmeme hodnotu faceSize, vynásobíme ji 1/2 a uložíme jako mouthSize.
Pokud tedy změníme faceSize, mouthSize se automaticky vypočítá jako její půlka.
Skvělé, přesně to chceme!
Teď eyeSize.
Takže faceSize je 300 a eyeSize je 40.
Potřebujeme, aby eyeSize bylo 40/300 hodnoty z faceSize.
A to je to samé jako 4/30, což zjednodušíme na 2/15.
Takže napíšu 2/15 krát faceSize.
Pokud jste mimochodem ještě se zlomky nepracovali a jsou pro vás těžké,
můžete si je procvičit zde na Khan Academy.
A vrátíte se, až se budete cítit připraveni.
Najdete je zde.
Zkusme znovu změnit velikost tváře.
Podívejte se na to, ústa a oči mění velikost úměrně k tváři.
Asi jste si ale všimli, že něco není v pořádku.
Oči a ústa pořád vystupují z tváře.
A to přestože jsou jejich velikosti už přijatelnější.
Je to kvůli tomu,
že v naší elipse máme pořád napevno zakódována čísla.
Jsou to čísla, která by měla být zlomkem proměnných.
Pojďme to prozkoumat.
Poloha x elipsy vykreslující oko je definována jako x minus 50.
To znamená, že je vždy x minus 50.
A to i v případě, že uděláme faceSize menší než 50 pixelů.
To nedává smysl,
protože naše levé oko pak už ani nebude na tváři.
Správně by to tedy mělo být:
x minus určitý zlomek velikosti naší tváře.
Zlomek zjistíme opět stejným způsobem.
Porovnáme hodnotu 50 ve vztahu k původní hodnotě 300.
Čili 50/300, 5/30, 1/6.
Takže napíšeme: 1/6 krát faceSize.
Zde máme taky 50.
Uděláme tedy to samé.
Bude to ten samý výraz.
Zde máme 100/300.
To bude: 1/3 krát faceSize.
Tady je 60.
To bude: 1/5 krát faceSize.
A tady máme dalších 50.
To je opět jedna šestina.
A 40, to už máme tady nahoře.
2/15 krát faceSize.
Pojďme to zkusit znovu.
Podívejte na to!
To je hezké.
Pojďme si to celé zopakovat.
Vytvořili jsme tuto proměnnou, která obsahuje velikost obličeje.
Ta obsahuje pouze číslo.
Poté zde máme proměnné mouthSize a eyeSize.
Definujeme je jako zlomky proměnné faceSize.
Tím zajistíme, že se jejich hodnoty mění úměrně k této hodnotě.
Následně jsou všechny poměry vypočteny ve vztahu k faceSize.
Tím zajišťujeme, že se poloha uvnitř tváře mění úměrně ke změně faceSize.
Tak a nyní, když už umíme vytvářet proměnné,
které jsou závislé na hodnotách jiných proměnných,
můžeme toho s našimi programy dělat mnohem víc.
Pojďme to oslavit a udělat Winstona opravdu velkého!