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óde main 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ť):

Vlajka