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!