Logo Czechitas
Vloženo: 19. 10. 2018

Úkol - Metody s parametrem

Část 1

Nejprve si okopírujte projekt 30-Turtle-Param_metody na 40-Turtle-Param_ukol. Vymažte z něj všechny původní metody a ponechejte si jen prázdný main(...).

Nyní vytvořte metody na kreslení základních tvarů (s pevnými velikostmi stran): Rovnoramenného trojúhelníku, čtverce, obdelníku a kolečka.

Část 2

Pro další práci bude třeba, 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).

public void main(String[] args) {
    zofka.setLocation(100.0, 100.0);
    // Volani metody, do ktere se preda hodnota 10
    nakresliRovnostrannyTrojuhelnik(50.0);

    zofka.setLocation(300.0, 100.0);
    // Volani metody, do ktere se preda hodnota 15
    nakresliRovnostrannyTrojuhelnik(70.0);
}

public void nakresliRovnostrannyTrojuhelnik(double velikostStrany) {
    // Zde lze používat proměnnou velikostStrany.
    // Jeji hodnota je takova, s jakou byla metoda zavolana
    // napr.
    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):

public void main(String[] args) {
    Color cervenaBarva;
    cervenaBarva = new Color(255, 0, 0);

    zofka.setLocation(100.0, 100.0);
    // Volani metody, do ktere se preda hodnota 10 a objekt, ktery je v promenne cervenaBarva
    nakresliBarevnyRovnostrannyTrojuhelnik(50.0, cervenaBarva);

    zofka.setLocation(300.0, 100.0);
    // Volani metody, do ktere se preda hodnota 15 a nove vytvoreny objekt barvy
    nakresliBarevnyRovnostrannyTrojuhelnik(70.0, new Color(0, 0, 255));
}

public void nakresliBarevnyRovnostrannyTrojuhelnik(double velikostStrany, Color barvaCary) {
    // Zde lze používat proměnnou velikostStrany a barva:
    zofka.setPenColor(barvaCary);
    zofka.move(velikostStrany);
    zofka.turnLeft(120.0);
    zofka.move(velikostStrany);
    zofka.turnLeft(120.0);
    zofka.move(velikostStrany);
    zofka.turnLeft(120.0);
}

Vytvořte tedy parametrizované metody na kreslení rovnoramenného trojuhelníku, čtverce, obdelníku a kolečka. Metody by měly přijímat jako vstupní parametr velikost strany (typu double). V případě trojúhelníku ještě úhel mezi rameny. 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 poloměr, průměr nebo nějakou jinou charakteristiku, nechám na vás).

Pokud chcete, jako bonus můžou metody přijímat i barvu kreslení. Není to ale povinné.

Pokud byste chtěli vypočítat, jak má být dlouhá třetí strana rovnoramenného trojúhelníku, pokud znáte délku ramene a úhel mezi rameny, ušetřím vás googlení analytické geometrie. Zde je metoda, která délku třetí strany vypočítá. V hodině jsme si neukazovali, jak vypadá metoda, která vrací nějaký výstup. V tomto případě jde o kombinaci jak vstupních parametrů, tak výstupu.

public void main(String[] args) {
    double stranaC;

    stranaC = vypocitejDelkuTretiStrany(100.0, 90.0);
    System.out.println("Strana A je 100, strana B je 100, strana C je " + stranaC);
}

public double vypocitejDelkuTretiStrany(double velikostRamene, double uhelMeziRameny) {
    double tretiStrana;
    tretiStrana = Math.abs((velikostRamene
            * Math.sin((uhelMeziRameny * Math.PI / 180.0) / 2.0))
            * 2.0);
    return tretiStrana;
}

Část 3

Pomocí metod výše nakreslete následující obrázky (zmrzlinu, sněhuláka a mašinku).

Odevzdání domácího úkolu

Nejprve appku (40-Turtle-Param_ukol) zbavte přeložených spustitelných souborů. Zařídíte to tak, že v IntelliJ IDEA vpravo zvolíte Maven Projects -> Lifecycle -> Clean. Úspěch se projeví tak, že v projektové složce zmizí podsložka target. Následně složku s projektem zabalte pomocí 7-Zipu pod jménem Ukol03-Vase_Jmeno.7z. (Případně lze použít prostý zip, například na Macu). Takto vytvořený archív nahrajte na Google Drive do složky Ukol03.

Vytvořte snímek obrazovky spuštěného programu a pochlubte se s ním v galerii Ukol03 na Facebooku.

Pokud byste chtěli odevzdat revizi úkolu (např. po opravě), zabalte ji a nahrajte ji na stejný Google Drive znovu, jen tentokrát se jménem Ukol03-Vase_Jmeno-verze2.7z.

Termín odevzdání je do úterý 23. 10. 2018 23:59. Pokud úkol nebo revizi odevzdáte později, prosím pošlete svému opravujícímu kouči/lektorovi email nebo zprávu přes FB.