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.