/**
 * Trida Smrk slouzi k demonstraci zakladu prace se zdrojovym kodem.
 *
 * Ve verzi Smrk jsou zavedeny atributy a definovany metody instanci.
 *
 * @author     Rudolf Pecinovsky
 * @version    1.0, prosinec 2002
 */
public class Smrk  
{
//== VEREJNE KONSTANTY =========================================================
//== SOUKROME KONSTANTY ========================================================
//== ATRIBUTY TRIDY ============================================================
//== ATRIBUTY INSTANCI =========================================================

    private Trojuhelnik horni;
    private Trojuhelnik stredni;
    private Trojuhelnik dolni;


//== PRISTUPOVE METODY ATRIBUTU TRIDY ==========================================
//== OSTATNI METODY TRIDY ======================================================

//== KONSTRUKTORY ==============================================================

    /**
     * Konstruktor pro objekty tridy Smrk, ktery umozni nastavit
     * souradnice a rozmery vytvareneho obrazce.
     * Souradnicemi objektu se pritom rozumi souradnice
     * leveho horniho rohu ctverce trojuhelniku.
     * @param x   x-ova souradnice, x>=0, x=0 ma levy okraj platna
     * @param y   y-ova souradnice, y>=0, y=0 ma horni okraj platna
     * @param sirka   sirka obdelniku,  sirka > 0
     * @param vyska   vyska obdelniku,  vyska > 0
     */
    public Smrk( int x, int y, int sirka, int vyska )
    {
        horni = new Trojuhelnik( x+sirka/5,  y,          3*sirka/5, 3*vyska/7 );
        stredni=new Trojuhelnik( x+sirka/10, y+vyska/7,  4*sirka/5, 4*vyska/7 );
        dolni = new Trojuhelnik( x,          y+2*vyska/7,  sirka,   5*vyska/7 );
    }//public Smrk( int x, int y, int sirka, int vyska )


    /**
     * Konstruktor pro objekty tridy Smrk, ktery umi nastavit
     * pocatecni pozici objektu. Velikost je implicitni.
     * Souradnicemi objektu se pritom rozumi souradnice
     * leveho horniho rohu opsanohu ctverce.
     * @param x   x-ova souradnice, x>=0, x=0 ma levy okraj platna
     * @param y   y-ova souradnice, y>=0, y=0 ma horni okraj platna
     * @param w   sirka obdelniku,  w > 0
     * @param h   vyska obdelniku,  h > 0
     */
    public Smrk( int x, int y )
    {
        this( x, y, 50, 70 );
    }//public Smrk( int x, int y )


    /**
     * Bezparametricky konstruktor pro objekty tridy Smrk.
     * Nakresli objekt standardni velikosti se souradnicemi [0;0].
     */
    public Smrk()
    {
        this( 0, 0, 50, 70 );
    }//public Smrk()


//== PRISTUPOVE METODY ATRIBUTU INSTANCI =======================================
//== OSTATNI METODY INSTANCI ===================================================

    /**
     *  Nakresli stromek na platno;
     */
    public void kresli()
    {
        horni.kresli();
        stredni.kresli();
        dolni.kresli();
    }//public void kresli()


    /**
     *  Posune stromek o zadany pocet bodu vpravo,
     *  pri zapornem parametru vlevo.
     *  
     *  @param n   pocet bodu, a ktere se smrcek posune
     */
    public void posunVpravo( int n )
    {
        horni.posunVpravo( n );
        stredni.posunVpravo( n );
        dolni.posunVpravo( n );
    }//public void posunVpravo( int n )


    /**
     * Metoda prevadi instanci na retezec -
     * pouziva se vetsinou pro ucely ladeni.
     * Mela by ji definovat kazda trida a uvest v ni
     * vsechny potrebne informace o vnitrnim stavu instance.
     *
     * @return     retezec informujici o vnitrnim stavu instance
     */
    public String toString()
    {
        //Nasledujici prikaz nahradte vlastnim kodem
        return super.toString();
    }//public String toString()


//== SOUKROME A POMOCNE METODY =================================================
//== VNORENE A VNITRNI TRIDY ===================================================

}//public class Smrk