Zadanie 2
Najneskorší termín odovzdania: 8.10.2023 (nedeľa) o 18:00
Odovzdávaný súbor: HomeTurtle.java
Cieľom tejto sady domácich zadaní je vytvoriť triedu HomeTurtle
, ktorá rozširuje triedu Turtle
a obsahuje nižšie predpísané metódy.
Doplňujúce požiadavky:
- vo vytvorených metódach nevyužívajte metódu
center
(v „spusťači“ v metódemain
ho použiť samozrejme môžete), - po vykonaní každej z metód nech je korytnačka na pozícii, kde bola pred jej vykonaním, a je natočená tým smerom, akým bola pred jej vykonaním,
- nepredpokladajte bielu farbu pozadia kresliacej plochy (korytnačka musí nakresliť korektný obrázok pri akejkoľvek farbe kresliacej plochy),
- riešenia, ktoré nebude možné skompilovať (t.j. riešenia so syntaktickými chybami) nebudú hodnotené,
- zdrojový kód správne naformátujte (CTRL+SHIFT+F),
- očakáva sa vhodne okomentovaný zdrojový kód
- pri riešení postačia poznatky, ktoré boli súčasťou 2. prednášky a na ňu nadväzujúcich cvičení.
Vlajka Malawi (4 body)
Naučte korytnačky triedy HomeTurtle
metódu flagOfMalawi
, ktorá pomocou náhodnej pochôdzky (viď 2. praktické cvičenie) nakreslí zjednodušenú vlajku štátu Malawi. Stred vlajky nech je na aktuálnej pozícii korytnačky, rozmery vlajky a počet náhodných krokov pochôdzky sú určené parametrami metódy (šírka vlajky je dvojnásobkom jej výšky). Vlajka nech je rovnobežná so stranami kresliacej plochy. Po skončení metódy nech sú natočenie korytnačky a jej pozícia rovnaké, ako boli pred zavolaním metódy.
Zjednodušenie oproti oficiálnej vlajke spočíva v tom, že netreba kresliť lúče vychádzajúceho slnka (symbolizujúceho úsvit slobody a nádeje pre Afriku). Rovnako nie je potrebné kresliť „medzeru“ medzi slnkom a červeným pásom.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public void flagOfMalawi(int stepCount, double height) {
// ... inicializacne prikazy
for (int i = 0; i < stepCount; i++) {
// ... prikazy na nastavenie farby podla aktualnej pozicie
this.turn(Math.random() * 360);
this.step(5);
// ... prikazy, resp. podmienka, ktore zabezpecia, ze korytnacka
// nevyjde mimo definovanej obdlznikovej oblasti
if (jeMimoDefinovanejOblasti) {
this.step(-5);
}
}
// ... prikazy, ktore obnovia vychodiskovy stav
}
Stromček (3 body)
Naučte korytnačky triedy HomeTurtle.java
metódu littleTree
, ktorá nakreslí obrazec, ako je to na obrázku nižšie. Stromček sa skladá z vyplnených rovnostranných trojuholníkov. Najväčší trojuholník (spodné „poschodie“) má šírku zadanú parametrom width
. Každé ďalšie poschodie má šírku o 20% menšiu než poschodie pod ním. Navyše spodok poschodia je vždy nižšie o 1/2
šírky poschodia pod ním od vrchola poschodia pod ním (viď obrázok). Celkovo sa stromček skladá z viacerých poschodí, ktorých počet je určený parametrom levelCount
. Farby jednotlivých poschodí sa striedajú. Súčasťou stromčeka je aj kmeň vo forme vyplneného obdĺžnika, ktorého výška je 1/8
a šírka 1/4
šírky prvého poschodia. Korytnačka sa na začiatku nachádza na spodnej strane kmeňa a je natočená v smere kmeňa.
RGB kódy farieb:
- kmeň:
153, 76, 0
- svetlejšie poschodie:
0, 153, 0
- tmavšie poschodie:
0, 130, 0
1
2
3 public void littleTree(int levelCount, double width) {
}
Rada:
- zvážte vytvorenie pomocnej metódy, ktorá nakreslí vyplnený rovnostranný trojuholník so zadanou dĺžkou strany
Poznámky k evaluácii 2. sady
„OK“ pri metóde znamená, že sa podarilo zrealizovať všetky testy a po skončení metódy ostala korytnačka v požadovanom stave. Neznamená to, že korytnačka nakreslila to, čo mala.
Upozorňujeme, že evaluátor dokresľuje do grafických výstupov vizuálne značky (poloha korytnačky, významné body, podfarbenie, atď.), ktoré umožňujú rýchlu vizuálnu kontrolu riešenia.
Očakávané grafické výstupy evaluátora pre korektné riešenie (poloha, natočenie a veľkosť obrazcov sa môžu líšiť):