Zadanie 1

Najneskorší termín odovzdania: 1.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 ktorá obsahuje nižšie predpísané metódy.

Do moodlu môžete odovzdávať riešenie opakovane. Hodnotené bude posledné odovzdané riešenie. Názvy triedy a jednotlivých metód musia byť zhodné so zadaním.

Doplňujúce požiadavky:

  • vo vytvorených metódach nevyužívajte príkazy center, setPosition, moveTo, setX, setY (v „spusťači“ v metóde main ich 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),
  • komentovaný zdrojový kód je vítaný,
  • počiatočná a zároveň koncová pozícia korytnačky sú vyznačené na obrázkoch,
  • pri riešení používajte len poznatky, ktoré boli súčasťou 1. prednášky a na ňu nadväzujúcich cvičení (ak patríte ku skúsenejším programátorom, tak vedzte, že nie je umenie vyriešiť úlohu s tým, čo viete, že by ste mohli mať k dispozícii, ale s tým, čo naozaj máte k dispozícii)
  • úlohy sú riešiteľné bez toho, aby ste museli nasadzovať goniometrické funkcie alebo odmocniny

Šípky (1 bod)

Vytvorte metódu arrows, ktorá nakreslí 4 rovnostranné trojuholníky umiestnené okolo korytnačky tak, ako je uvedené na ilustračnom obrázku. Dĺžka strán rovnostranných trojuholníkov je určená parametrom size. Najbližšia strana každého trojuholníka je vzdialená presne size od aktuálnej pozície korytnačky. Trojuholníky sú orientované v smere natočenia korytnačky.


1
2
3
public void arrows(double size) {

}

Zub (1 bod)

Vytvorte metódu cog, ktorá nakreslí vyplnený rovnoramenný lichobežník tak, ako je to znázornené na ilustračnom obrázku. Rozmery lichobežníka sú určené parametrom size. Konkrétne základňa lichobežníka, v ktorej strede sa nachádza korytnačka, má dĺžku 2*size. Kratšia základňa a obe ramená majú dĺžku size. Zub je vyplnený aktuálnou farbou výplne a je kreslený bez obrysov (vypnuté kresliace pero).


1
2
3
public void cog(double size) {

}

Trojzub (1 bod)

Vytvorte metódu tripleCog, ktorá nakreslí červený obrazec skladajúci sa z troch zubov so zadaným rozmerom. Dlhšie základne zubov tvoria rovnostranný trojuholník. Korytnačka sa nachádza v strede dlhšej základne jedného zo zubov a je natočená v smere od spoločného body zostávajúcich dvoch zubov. Na nakreslenie zubov využite metódu z predošlej úlohy, t.j. nie je dovolené v metóde tripleCog použiť metódy openPolygon a closePolygon.


1
2
3
public void tripleCog(double size) {

}

Obrazec zo šesťuholníkov (1 bod)

Vytvorte metódu beehive, ktorá namaľuje nižšie uvedený obrazec skladajúci sa zo 6-uholníkov so zadanou dĺžkou strany. V metóde využite nižšie uvedenú metódu hexagon na nakreslenie pravidelného 6-uholníka so zadanou dĺžkou strany. Metódu hexagon neupravujte!

Korytnačka sa tak, ako je to v predlohe, nachádza v strede obrazca. Obrazec je nakreslený zelenou farbou.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public void hexagon(double size) {
    this.penUp();
    this.step(size);
    this.penDown();
    this.turn(120);
    for (int i = 0; i < 6; i++) {
        this.step(size);
        this.turn(360 / 6);
    }
    this.turn(-120);
    this.penUp();
    this.step(-size);
    this.penDown();
}

public void beehive(double size) {

}


Poznámky k evaluácii 1. sady

„OK“ pri úlohe 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.

Očakávané grafické výstupy evaluátora pre korektné riešenie (poloha, natočenie a veľkosť obrazcov sa môžu líšiť):

Šípky

Zub

Trojzub

Obrazec