Doplňte do projektu metody pro východ a západ slunce za geocentrického předpokladu.
Cvičení 2 - úkol 5
V předchozím úkolu jsme si vysvětlili, jakým způsobem můžeme řešení východu a západu slunce pojmout.V tomto případě budeme předpokládat, že slunce obíhá kolem země - takzvaný geocentrický pohled
- Při tomto způsobu řešení vzniká za celou dobu života objektu
Obrazek
pouze jedna instance třídyKruh
představující slunce. - Toto slunce obíhá kolem země, takže při východu slunce se příslušný kruh posune na viditelnou část plátna a při západu mimo tuto oblast.
- Začneme tedy znovu editací zdrojového kódu třídy
Obrazek
. - Protože slunce bude vždy existovat, a dle jeho existence se tedy již nebudeme moci moci rozhodovat, zda je noc (jako v minulém případě), budeme si muset tuto informaci uchovat jinak. Uchováme si ji pomocí instanční proměnné s názvem
jeDen
. Tato proměnná bude typuboolean
což znamená, že její hodnota může nabývat pouze hodnottrue
nebofalse
(pravda
nebonepravda
). Za kód, který jsme přidávali do metody kresli pro zobrazení slunce na obloze přidáme inicializaci proměnnéjeDen
. Hodnotu přiřadíme samozřejmětrue
, protože pokud je slunce na obloze, tak to značí že je den. Upravíme tělo metody
vychodSlunce()
- Tělo metody budeme provádět pouze v tom případě, že slunce není na obloze (je tedy noc), což poznáme podle toho, že hodnota proměnné jeDen je false.
- Jako v předchozím případě provedeme obarvení obrázku a posun kruhu po plátně.
Jediná odlišnost bude spočívat v tom, že do metody ještě přidáme kód,v kterém do proměnné jeDen uložíme hodnotu
true
.
Dále upravíme metodu
zapadSlunce()
- Tělo této metody budeme chtít provádět pouze v tom případě, že je den - tedy proměnná
jeDen
má hodnotutrue
. - Stejně jako v předchozí variantě obarvíme obrázek na černo-bílo a posuneme kruh mimo plátno.
- Protože nebude Kruh mazat musíme si ho připravit pro další použití - přesuneme ho tedy mimo plátno do výchozí polohy před východem slunce pomocí volání
posunHorizontalne(-360)
. - Změníme také hodnotu proměnné
jeDen
na hodnotufalse
, což značí, že je noc.
- Tělo této metody budeme chtít provádět pouze v tom případě, že je den - tedy proměnná
- Nyní již zbývá třídu přeložit, vytvořit její instanci a po zavolání metody kresli obě metody otestovat.
Ukázka
Nahoru