Zde jsme skončili s naší
hrou na hod mincí.
Začali jsme vygenerováním
náhodného čísla mezi 0 a 1.
Pak jsme číslo zaokrouhlili
k nejbližšímu celému číslu.
Toto nám vrátilo číslo,
které bylo buď 0 nebo 1.
Následně jsme pomocí elipsy
nakreslili tuto realistickou minci.
Ta je buď fialová nebo žlutá,
v závislosti na číslu.
A zde pro to máme kód.
Pokud je "integer" 0,
použij fialovou barvu.
Jinak použij žlutou.
Minci nakreslíme
tady tím dole.
Teď jsem se ale rozhodla,
že moje mince má 3 strany.
Ano, třístranná mince.
Pojďme tedy přidat
tu třetí stranu.
Začnu určením
čísla mezi 0 a 2.
To mi po zaokrouhlení vrátí číslo,
které bude buď 0, 1 nebo 2.
V našem kódu pro kreslení
jsme ale pokryli pouze 2 případy.
Pokud je "integer" 0, použij fialovou,
jinak použij žlutou.
Nyní "jinak" může značit
0, 1 nebo 2.
Co kdybych udělala to samé,
co jsem udělala předtím?
Ale uvnitř bloku "else".
Napíšu tedy:
Pokud se "integer" rovná 1,
použij žlutou barvu (tak jako předtím).
Jinak nastavíme barvu
na červenou.
To by šlo.
Toto znamená,
že pokud je "integer" 0, použij fialovou,
jinak pokud je 1, použij žlutou,
jinak – pokud není 0 ani 1 ale 2,
použij barvu červenou.
Několikrát to spustím
a funguje to!
Kdybych chtěla k minci
přidat další strany,
mohla se vrátit sem nahoru,
a určit číslo mezi 0 a 3.
Pak bych prohloubila
tento "else" blok.
Poté bych měla více
if-else příkazů a tak dále.
Až bych měla hromadu
vnořených bloků.
A až poté bych si uvědomila,
že je tento kód nechutný!
Kód by měl být lehce čitelný a pěkný,
a ne tak odporný, jak jen to jde.
Tady je to, co uděláme.
Kdykoli máme jeden příkaz "if",
nebo "if-else" příkaz v bloku "else",
a opravdu nic jiného neděláme,
nenastavujeme žádnou barvu ani příkaz.
Vše co máme je jen jeden příkaz "if",
který obsahuje blok "else".
V tom případě můžeme příkaz
spojit s předcházející řádkou.
Pokud platí, že "else if (integer === 1)",
nastav barvu na žlutou.
A tento poslední "else" blok
není vnořený nikde.
Umístíme ho na samý konec.
Toto celé teď znamená:
Pokud je "integer" rovný 0,
nastav fialovou,
jinak pokud je rovný 1,
nastav žlutou,
jinak – pokud ani jedno není pravda,
nastav červenou.
A jak můžete vidět,
stále to funguje.
Skvělá věc je, že můžeme mít
tolik else-if, kolik jen chceme.
A tím pádem je pro mě
jednoduché přidat více stran mince.
Pojďme to teď udělat.
Určíme číslo mezi
0 a 3.
Poté přidáme ještě jeden
else blok, který vypadá takto:
else if (integer === 2),
vybarvíme červenou.
A tento poslední else blok použijeme,
když bude "integer" roven 3.
Vybarvíme minci na modro.
Abyste toto mohli udělat,
musíte vždy začít s příkazem if.
A poté můžete použít tolik else-if
příkazů, kolik jen chcete.
A tento poslední je volitelný.
Vlastně ho nepotřebujeme.
Potom je ale možné,
že bude vše nepravdivé.
A tím pádem se žádný
z bloků nepřehraje.
Ale dokud ho tam máme,
jeden z bloků se přehraje určitě.
Tohle je případ,
kdy moc nezáleží na tom,
jestli řeknete if-else, if-else nebo
použite jen obyčejný if příkaz.
Tak jako na začátku.
Například:
if (integer === 3).
A to kvůli tomu,
že není možné, aby se "integer" rovnal
0 a zároveň 1, 2 nebo 3.
Tyto podmínky se
všechny vzájemně vylučují.
Vždy se přehraje pouze jeden
z těchto bloků.
Nemusí tomu tak
ale vždy být.
Co kdybychom udělali podobnou hru
bez zaokrouhlování na celé číslo?
Část pro zaokrouhlení
teď odstraním.
Odstraním i část
pro kreslení.
A pojďme pro mou hru
nastavit nová pravidla.
Pořád generuji číslo
mezi 0 a 3.
Rozšířím osu o
více čárek.
Řekněme, že pokud bude číslo mezi 0 a 1,
použijeme barvu fialovou.
Pokud bude číslo mezi 1 a 2,
použijeme barvu žlutou.
A pokud bude číslo mezi 2 a 3,
použijeme barvu červenou.
Pojďme to teď provést pomocí
příkazů if a else-if.
Začnu: pokud je "number"
menší než 1.
Takže je menší než 1,
ale zároveň je mezi 0 a 3.
Tím pádem musí
být v tomto rozmezí.
V tom případě nastavím
barvu fialovou.
Jinak pokud bude číslo menší než 2,
nastavím barvu žlutou.
A jinak nastavím výplň
na červeno.
Pracuje to tak, jak má.
Pokud je číslo menší než 1,
nachází se v tomto rozmezí.
Jinak je větší nebo rovno 1,
ale zároveň méně než 2.
A tím pádem je v tomto rozmezí,
nastavíme tedy žlutou.
Jinak musí být větší či rovno 2,
a bude tím pádem v tomto rozmezí.
A tady je případ toho,
co bychom nemohli říct:
Pokud je číslo menší než 2
a pokud je menší než 3.
A to kvůli tomu,
že pokud je číslo menší než 1,
tak ja zároveň menší než 2.
A stejně tak bude menší než 3.
Tím pádem bude naše mince
pokaždé červená.
A proto se hodí používat
příkaz else-if.