Zadanie 2

Najneskorší termín odovzdania: 6.10.2024 (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 „spúšť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+ALT+L),
  • 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 Kórejskej republiky (2-5 bodov)

Naučte korytnačky triedy HomeTurtle metódu flagOfSouthKorea, ktorá pomocou náhodnej pochôdzky (viď 2. praktické cvičenie) nakreslí zjednodušenú vlajku Kórejskej republiky. Stred vlajky nech je na aktuálnej pozícii korytnačky, výška vlajky a počet náhodných krokov pochôdzky sú určené parametrami metódy (pomer šírky ku výške vlajky je 3:2). 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ť čierne trigramy (znaky). Navyše modrá a červena kruhová časť majú stredy na vodorovnej osi vlajky.

Pozn.: Za neúplne riešenie, kde bude horná polovica stredného kruhu modrá a dolná polovica červená udelíme 2 body.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void flagOfSouthKorea(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
}

Šípka (0.5 boda)

Naučte korytnačky triedy HomeTurtle metódu sipka, ktorá nakreslí navigačnú šípku podľa vzoru nižšie. Metóda má parametre sirka a dlzka určujúce rozmery šípky. „Vyrezaný“ aj „smerový“ trojuholník sú rovnostranné trojuholníky, t.j. uhol v hrote šípky je 60°. Korytnačka sa na začiatku a na konci nachádza v strede základne „vyrezaného“ rovnostranného trojuholníka. Šípka je natočená v smere natočenia korytnačky. Farba šípky je daná aktuálne nastavenou farbou výplne.


1
2
3
public void sipka(double sirka, double dlzka) {

}

Šípkovnica (2.5 boda)

Naučte korytnačky triedy HomeTurtle metódu sipkovnica, ktorá s využitím metódy sipka nakreslí navigačný obrazec, ako je to na obrázku nižšie. Metóda má 4 parametre:

  • pocetSipok – počet šípok tvoriacich symbol,
  • sirka – šírka obrazca (zároveň šírka každej zo šípok),
  • dlzkaPrvej – dĺžka prvej zo šípok v obrazci,
  • medzera – medzera medzi za sebou idúcimi šípkami v obrazci.

Dĺžka prvej zo šípok je zadaná parametrom metódy dlzkaPrvej. Dĺžka každej ďalšej šípky je 70% z dĺžky predchádzajúcej. Farby šípok sú striedavo oranžová a čierna. Prvá (najdlhšia) šípka je oranžová.

Obrazec smeruje v smere aktuálneho natočenia korytnačky, korytnačka sa na začiatku aj na konci nachádza na pozícii uvedenej na obrázku.

Využiť metódu sipka znamená, že kreslenie je realizované len volaním metódy sipka. Jednotlivé príkazy v metóde sipkovnica len zabezpečujú vhodné presuny a natočenie korytnačky (s vypnutým kresliacím perom) pred jednotlivými volaniami kresliacej metódy sipka.


1
2
3
public void sipkovnica(int pocetSipok, double sirka, double dlzkaPrvej, double medzera) {

}


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

Šípka

Šípkovnica