Príloha 8 – prvá fáza tvorby triedy AnimovanýObjekt

Prevziať

public class AnimovanýObjekt extends GRobot
{
    // Fixný počet fáz animácie pri chôdzi.
    private final static int fázChôdze = 2;
 
    private Pozícia pozícia = Pozícia.pravýBreh;
    // Premenné zvuk, obrázokDoľava a obrázokDoprava budú obsahovať
    // názvy súborov podľa vnútorne dohodnutej schémy.
    private String meno, zvuk;
    private String obrázokDoľava[] = new String[1 + fázChôdze];
    private String obrázokDoprava[] = new String[1 + fázChôdze];
    private AnimovanýObjekt cieľ;
    private double posunX, posunY;
    private double ľavýX = 0, ľavýY = 0;
    private double pravýX = 0, pravýY = 0;
    private double posunPopisuX;
    private double posunPopisuY;
    private int fázaChôdze = 0; // Ak je hodnota nulová, znamená to,
                                // že objekt nie je animovaný.
 
    public AnimovanýObjekt(String meno, double posunX, double posunY,
        double posunPopisuX, double posunPopisuY)
    {
        zdvihniPero();
 
        // Inicializujem názvy súborov podľa dohody.
        obrázokDoľava[0] = "súbory/" + meno + "-ľ.png";
        obrázokDoprava[0] = "súbory/" + meno + "-p.png";
        zvuk = "súbory/" + meno + ".wav";
 
        this.meno = meno;
        this.posunX = posunX;
        this.posunY = posunY;
        this.posunPopisuX = posunPopisuX;
        this.posunPopisuY = posunPopisuY;
 
        spôsobKreslenia(KRESLI_NA_STRED);
        rýchlosť(10, false);
    }
 
    @Override public void kresliTvar()
    {
        skoč(posunX, posunY);
   
        if (vPohybe() && fázaChôdze != 0)
        {
            if (smer() >= 90 && smer() <= 270)
                obrázok(obrázokDoľava[fázaChôdze]);
            else
                obrázok(obrázokDoprava[fázaChôdze]);
        }
        else if (smer() >= 90 && smer() <= 270)
            obrázok(obrázokDoľava[0]); else obrázok(obrázokDoprava[0]);
 
        domov();
        if (myšV())
        {
            skoč(posunPopisuX, posunPopisuY);
            text(meno);
        }
    }
 
    public boolean vPohybe()
    {
        return aktívny();
    }
 
    public boolean myšV()
    {
        return myšVElipse(50, 60);
    }
 
    public void umožniAnimáciuChôdze()
    {
        for (int i = 1; i <= fázChôdze; ++i)
        {
            obrázokDoľava[i] = "súbory/" + meno + "-ľ-" + i + ".png";
            obrázokDoprava[i] = "súbory/" + meno + "-p-" + i + ".png";
        }
        fázaChôdze = 1;
    }
}