2. sada domácich zadaní

Najneskorší termín odovzdania: 6.10.2019 (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 Etiopie (4 body)

Naučte korytnačky triedy HomeTurtle metódu flagOfEthiopia, ktorá pomocou náhodnej pochôdzky (viď 2. praktické cvičenie) nakreslí zjednodušenú vlajku štátu Etiópia - የኢትዮጵያ ሰንደቅ ዓላማ. 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 na modrom embléme (reprezentujúcom rovnosť všetkých bez ohľadu na rasu, vieru a pohlavie) netreba kresliť žltú hviezdu (vyjadrujúcu svetlú budúcnosť krajiny).

public void flagOfEthiopia(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
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