-
Pokračujeme s programem kreslícím
Winstona.
-
Přidala jsem k němu nějaký text.
-
Bude potřeba umístit každého
Winstona pod jeden štítek.
-
Daný štítek ho zobrazí
v určitém bodě života.
-
Teď máme Winstony rozházené všude.
-
To proto, že faceX a faceY jsou nastavena
jako náhodná čísla.
-
Chceme tedy říci: „Toto je přesná pozice,
kde chceme, abys nakreslil Winstona."
-
Chceme mít možnost určit tuto pozici,
když zavoláme funkci.
-
Přesně tak jako u funkcí elipse() a rect().
-
Chceme dát Winstona sem, tady,
jednoho sem a jednoho sem.
-
Nechceme náhodnou pozici,
když zavoláme funkci.
-
Abychom to mohli udělat, musíme určit
"parametry" funkce.
-
Musí být přímo v definici
naší funkce, tedy zde úplně nahoře.
-
A pak se použijí, když voláme naší funkci,
tady dole.
-
Pro funkci drawWinston (),
tedy určíme parametry faceX a faceY.
-
Použijeme tyto hodnoty,
místo náhodného generování.
-
Co bychom přidali do volání těchto funkcí,
když chceme umístit Winstony pod text?
-
Chceme, aby x a y každého Winstona byly
podobné číslům, které jsou ve funkci text.
-
Možná tak o 10 pixelů níž u parametru y.
-
První dáme na 10 a 30.
-
Pak třeba 200 a 30 ...
10 a 230 ... a 200 a 230.
-
Je to stejné jako textové souřadnice,
jen přidáváme 10 ke každému y.
-
Chceme Winstona trošku níž než text.
-
Winston se ale stále nepohnul.
-
Neřekli jsme totiž naší funkci,
že chceme používat parametry.
-
Funkce stále tedy používá náhodné hodnoty
místo parametrů.
-
Naší funkci ale chceme říct,
že místo náhodných čísel má použít zadané parametry.
-
Názvy parametrů proto musíme dát
do těchto závorek.
-
Nazveme je faceX a faceY
a oddělíme je čárkou.
-
Na tyto parametry už odkazujeme uvnitř funkce
-
a díky tomu nemusíme
přepisovat zbytek našeho kódu.
-
Pořád se ale nic nestalo.
Winstonové se nepohnuli.
-
Podívejte se na začátek naší funkce.
-
Tady totiž přepisujeme faceX a faceY
náhodnými hodnotami.
-
Takže teď nám stačí akorát
smazat tyto řádky.
-
Nyní se už faceX a faceY dostávají
správně do funkce.
-
Používají se hodnoty,
které voláme.
-
Ale nepodařilo se nám trefit
pozice úplně správně.
-
Zapomněli jsme, že text získá pozici podle
levého horního rohu a obličej podle středu.
-
Musíme si teď trošku pohrát s čísly.
-
Měli bychom asi dost posunout x souřadnici.
-
Takže teď měním hodnoty, které
vkládáme do funkce.
-
Nemusím už měnit
celou definici funkce.
-
Vždycky se použijí tato čísla
jako hodnoty do naší funkce.
-
Přesně tak jako u funkcí
ellipse() a rect().
-
Pozice jsem už spravila, ale
všimněte si, že Winston je příliš velký.
-
Obličeje se překrývají a
nevejdou se vedle sebe.
-
Kód k nakreslení obličeje je vložený
přímo do funkce.
-
Můžeme tedy změnit velikost
u všech najednou.
-
Stačí změnit řádek
kódu, který kreslí elipsu.
-
Pokud sem napíšu třeba 190,
tak bude Winston moc hubený.
-
Ještě sem 190, teď už se vejdou lépe.
-
Dál bychom ho mohli upravit tak,
aby se vešel hezky mezi texty.
-
Zopakujme si teď, co tento kód dělá.
-
Definuje funkci
nazvanou drawWinston().
-
Říká také, že tato funkce má dvě hodnoty
označené jako faceX a faceY.
-
Tyto hodnoty jsou proměnné.
Můžeme je tak použít kdekoli uvnitř funkce.
-
Třeba tady jsme je použili jako proměnné.
-
Poté, co máme funkci hotovou,
ji můžeme zavolat, kdykoli chceme.
-
Můžeme jí předávat různé hodnoty,
takže použije vždy nové hodnoty.
-
Ukázali jsme si tedy,
jaká je výhoda funkcí.
-
Můžeme je použít na kód,
který potřebujeme použít opakovaně.
-
Můžeme také pomocí parametrů říct:
„V kódu je něco, co můžeš změnit.“
-
Je to jako recept.
Zapíšete si obecný postup.
-
A pak si uvědomíte, že potřebujete
uvařit pro 4 Winstony, ne pro 1.
-
Nemusíte začínat znovu.
Stačí upravit původní postup
-
a třeba to celé 4 krát vynásobit.
-
A teď je čas na vymýšlení
receptů ve vašem kódu.