Každou část úkolu vytvořte jako samostatný commit. Pokud zjistíte dodatečně v kódu nějakou chybu, nevadí, commitněte opravu jako další commit. Pokud si chcete práci průběžně zálohovat, po commitu udělejte také push, čímž se všechny neodeslané commity nahrají na GitHub.
Vytvořte metody na kreslení základních tvarů s parametrickou délkou strany: rovnostranného trojúhelníku (trojúhelník, který má všechny tři strany stejně dlouhé), čtverce, obdelníku a kolečka.
Následující sekce (Opakování a detailní navedení k problému) je myšlena jako opakování látky z hodiny, který vám pomůže k řešení. Pokud víte, jak naprogramovat parametrizované metody zadané výše, můžete pokračovat k podnadpisu Část 1.2 - Detailní zadání.
Chceme, aby základní tvary měly volitelné velikosti stran, tedy aby se jejich velikost dala nastavit. Připravíme metody
tak, aby přijímaly vstupní parametr(y). Pro zopakování je níže vidět ukázka metody nakresliRovnostrannyTrojuhelnik()
,
která přijímá jako vstupní parametr velikostStrany
typu double
. Navenek je potřeba metodu zavolat s nějakou
hodnotou, uvnitř metody se velikostStrany
chová jako proměnná (proto musí mít definovaný typ, např. double
).
Turtle zofka;
public void main(String[]args) {
zofka = new Turtle();
zofka.setLocation(100.0,100.0);
// Volani metody, do ktere se preda hodnota 50.0
nakresliRovnostrannyTrojuhelnik(50.0);
zofka.setLocation(300.0,100.0);
// Volani metody, do ktere se preda hodnota 70.0
nakresliRovnostrannyTrojuhelnik(70.0);
}
public void nakresliRovnostrannyTrojuhelnik(double velikostStrany) {
// Zde lze používat proměnnou velikostStrany.
// Jeji hodnota je takova, s jakou byla metoda zavolana
zofka.move(velikostStrany);
zofka.turnLeft(120.0);
zofka.move(velikostStrany);
zofka.turnLeft(120.0);
zofka.move(velikostStrany);
zofka.turnLeft(120.0);
}
Metoda může přijímat i více parametrů za sebou (oddělujeme čárkou):
Turtle zofka;
public void main(String[]args) {
zofka = new Turtle();
Color cervenaBarva;
cervenaBarva=new Color(255,0,0);
zofka.setLocation(100.0,100.0);
// Volani metody, do ktere se preda hodnota 50.0 a objekt, ktery je v promenne cervenaBarva
nakresliBarevnyRovnostrannyTrojuhelnik(50.0,cervenaBarva);
zofka.setLocation(300.0,100.0);
// Volani metody, do ktere se preda hodnota 70.0 a in-line vytvoreny objekt barvy
nakresliBarevnyRovnostrannyTrojuhelnik(70.0,new Color(0,127,255));
}
public void nakresliBarevnyRovnostrannyTrojuhelnik(double velikostStrany,Color barvaCary) {
// Zde lze používat proměnnou velikostStrany a barvaCary:
zofka.setPenColor(barvaCary);
zofka.move(velikostStrany);
zofka.turnLeft(120.0);
zofka.move(velikostStrany);
zofka.turnLeft(120.0);
zofka.move(velikostStrany);
zofka.turnLeft(120.0);
}
Pro mašinku můžete připravit i metodu na kreslení rovnoramenného pravoúhlého trojúhelníku. Zbývající dva úhly budou samozřejmě 45° a délku třetí strany (přepony) vypočítáte:
var velikostPrepony = Math.sqrt(2*Math.pow(velikostStrany, 2));
Math.pow()
umocní první pamater na hodnotu druhého parametru. Math.sqrt()
vypočítá druhou odmocninu.
Vytvořte tedy parametrizované metody na kreslení rovnostranného trojuhelníku, čtverce, obdelníku a kolečka. Metody pro
nakreslení rovnostranného trojúhelníku a čtverce by měly přijímat jako vstupní parametr velikost strany (typu double
).
V případě obdelníku budou nutné dva parametry (strana A, strana B). V případě kolečka se bude předávat velikost
kolečka (zda to bude poloměr, průměr nebo nějaká jiná charakteristika, nechám na vás). Pro mašinku si můžete připravit i metodu
pro kreslení pravoúhlého rovnoramenného trojúhelníku, vzoreček je uveden v předchozí části.
Pokud chcete, jako bonus můžou metody přijímat i barvu kreslení. Není to ale povinné.
Pomocí výše odladěných metod nakreslete následující obrázky – zmrzlinu, sněhuláka a mašinku. Pro mašinku můžete použít buď připravenou metodu pro rovnostranný trojúhelník (mašinka pak vepředu nebude mít pluh ale spíš šipku), nebo si vytvořte ještě metodu pro nakreslení pravoúhlého trojúhelníku).