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;
}
}