CV02 - Zadání - 3

Zadání úlohy na cvičení.

Zadání

V prvním cvičení jsme vykreslovali základní objekty do canvasu, v tomto cvičení předělejte vykreslování do tříd. Výchozí projekt naleznete na https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab02

Vytvořte třídu Scene. V konstruktoru se budou vytvářet všechny objekty, minimálně objekty Background, Boat a Rock.

scene

Třída Scene bude obsahovat metody draw() a simulate(). Metoda draw bude vykreslovat všechny objekty.

public void draw(GraphicsContext gc) {
background.draw(gc);
rock.draw(gc);
boat.draw(gc);
}

Rock

Třída Rock bude obsahovat přetížený konstruktor, který bude obsahovat jako parametr buď pouze instanci třídy Scene a použije se defaultní nastavení ostatních atributů nebo bude obsahovat možnost nastavení všech základních vlastnosí (počáteční pozice, velikost). Konstruktory se mohou mezi sebou využít aby nebylo nutno kód psát dvakrát. Použijte this(...)

Třída se bude zobrazovat například jako obdelník nebo jako obdelník s kulatými rohy.

public Rock(Scene scene) {
// ...
}

public Rock(Scene scene, Point2D position, Dimension2D size) {
// ...
}

Boat

Třída Boat bude vykreslená pomocí animovaného obrzku (např. zde). K načtení obrázku použijte:

Boat.class.getResourceAsStream("ship-boat.gif")
    

Background

Třída Background bude zobrazovat jeden nebo všechny obrázky z (city-close, city-mid, city-far, city-reflection). Navíc by se pozadí mělo posouvat doleva aby se vytvořil dojem že loď ejden doprava. Jako bonus si můžete vyzkošet posouvat různé vrstvy pozadí různou rychlostí. Pro vykreslení zvoleného výřezu pozadí použíjte metodu:

public void drawImage(Image img,
double sx, double sy, double sw, double sh,
double dx, double dy, double dw, double dh)

Třídní diagram

Zoom

Ukázku třídního diagramu jak by přibližně měla vypadat struktura tříd naleznete zde.

Řešení

Řešení zadání najdete v gitu ve větvi solution-v3 https://gitlab.vsb.cz/jez04-vyuka/java1/labs/lab02/-/tree/solution-v3?ref_type=heads