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