erster commit
This commit is contained in:
126
Schrank.java
Normal file
126
Schrank.java
Normal file
@@ -0,0 +1,126 @@
|
||||
import java.awt.Shape;
|
||||
import java.awt.geom.GeneralPath;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.awt.geom.AffineTransform;
|
||||
public class Schrank
|
||||
{
|
||||
private int xPosition;
|
||||
private int yPosition;
|
||||
private int orientierung;
|
||||
private String farbe;
|
||||
private boolean istSichtbar;
|
||||
private int breite;
|
||||
private int tiefe;
|
||||
|
||||
|
||||
public Schrank() {
|
||||
xPosition = 160;
|
||||
yPosition = 80;
|
||||
farbe = "blau";
|
||||
orientierung = 0;
|
||||
istSichtbar = false;
|
||||
breite = 110;
|
||||
tiefe = 60;
|
||||
}
|
||||
|
||||
private Shape gibAktuelleFigur() {
|
||||
// einen GeneralPath definieren
|
||||
GeneralPath schrank = new GeneralPath();
|
||||
schrank.moveTo(0 , 0);
|
||||
schrank.lineTo(breite, 0);
|
||||
schrank.lineTo(breite, tiefe);
|
||||
schrank.lineTo(breite, tiefe);
|
||||
schrank.lineTo(0 , 0);
|
||||
// Das ist die Umrandung. Das schrank bekommt noch eine Lehne:
|
||||
schrank.moveTo(0 , (breite/10+1));
|
||||
schrank.lineTo(breite, tiefe);
|
||||
// transformieren:
|
||||
AffineTransform t = new AffineTransform();
|
||||
t.translate(xPosition, yPosition);
|
||||
Rectangle2D umriss = schrank.getBounds2D();
|
||||
t.rotate(Math.toRadians(orientierung),umriss.getX()+umriss.getWidth()/2,umriss.getY()+umriss.getHeight()/2);
|
||||
return t.createTransformedShape(schrank);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mache dieses Objekt sichtbar. Wenn es bereits sichtbar ist, tue nichts.
|
||||
*/
|
||||
public void zeige() {
|
||||
if (!istSichtbar) {
|
||||
istSichtbar = true;
|
||||
zeichne();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Mache dieses Objekt unsichtbar. Wenn es bereits unsichtbar ist, tue nichts.
|
||||
*/
|
||||
public void verberge() {
|
||||
loesche(); // "tue nichts" wird in loesche() abgefangen.
|
||||
istSichtbar = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Drehe auf den angegebenen Winkel
|
||||
*/
|
||||
public void dreheAuf(int neuerWinkel) {
|
||||
loesche();
|
||||
orientierung = neuerWinkel;
|
||||
zeichne();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bewege dieses Objekt horizontal um 'entfernung' Bildschirmpunkte.
|
||||
*/
|
||||
public void bewegeHorizontal(int entfernung) {
|
||||
loesche();
|
||||
xPosition += entfernung;
|
||||
zeichne();
|
||||
}
|
||||
|
||||
/**
|
||||
* Bewege dieses objekt vertikal um 'entfernung' Bildschirmpunkte.
|
||||
*/
|
||||
public void bewegeVertikal(int entfernung) {
|
||||
loesche();
|
||||
yPosition += entfernung;
|
||||
zeichne();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Aendere die Farbe dieses Objektes in 'neueFarbe'.
|
||||
* Gueltige Angaben sind "rot", "gelb", "blau", "gruen",
|
||||
* "lila" und "schwarz".
|
||||
*/
|
||||
public void aendereFarbe(String neueFarbe) {
|
||||
loesche();
|
||||
farbe = neueFarbe;
|
||||
zeichne();
|
||||
}
|
||||
|
||||
/**
|
||||
* Zeichne dieses Objekt mit seinen aktuellen Werten auf den Bildschirm.
|
||||
*/
|
||||
private void zeichne() {
|
||||
if (istSichtbar) {
|
||||
Shape figur = gibAktuelleFigur();
|
||||
Leinwand leinwand = Leinwand.gibLeinwand();
|
||||
leinwand.zeichne (
|
||||
this, // leinwand kennt das Objekt
|
||||
farbe, // definiert seine Zeichenfarbe
|
||||
figur); // definiert seinen grafischen Aspekt
|
||||
leinwand.warte(10);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loesche dieses Objekt vom Bildschirm.
|
||||
*/
|
||||
private void loesche() {
|
||||
if (istSichtbar){
|
||||
Leinwand leinwand = Leinwand.gibLeinwand();
|
||||
leinwand.entferne(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user