Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.Shape;
- import java.awt.geom.GeneralPath;
- import java.awt.geom.Rectangle2D;
- import java.awt.geom.AffineTransform;
- /**
- * Ein Bett, der manipuliert werden kann und sich selbst auf einer Leinwand zeichnet.
- *
- * @author Claus Albowski
- * @version 2.2 (aug 07)
- */
- public class Bett
- {
- private int xPosition;
- private int yPosition;
- private int orientierung;
- private String farbe;
- private boolean istSichtbar;
- private int breite;
- private int tiefe;
- /**
- * Erzeuge einen neuen Bett mit einer Standardfarbe und Standardgroesse
- * an einer Standardposition. (Standardkonstruktor)
- */
- public Bett() {
- xPosition = 160;
- yPosition = 80;
- farbe = "blau";
- orientierung = 0;
- istSichtbar = false;
- breite = 40;
- tiefe = 40;
- }
- /**
- * Erzeuge einen neuen Bett mit einer Standardfarbe und Standardgroesse
- * an einer Position. (AlternativerKonstruktor)
- */
- public Bett(int x, int y) {
- xPosition = x;
- yPosition = y;
- farbe = "blau";
- orientierung = 0;
- istSichtbar = false;
- breite = 40;
- tiefe = 40;
- }
- /**
- * Berechnet das zu zeichnende Shape anhand der gegebenen Daten
- * [ Zum Anzeigen der Attributwerte �ber Inspect muss hier die Sichtbarkeit
- * auf public gesetzt werden. ]
- */
- private Shape gibAktuelleFigur() {
- // einen GeneralPath definieren
- GeneralPath bett = new GeneralPath();
- bett.moveTo(0 , 0);
- bett.lineTo(breite, 0);
- bett.lineTo(breite, tiefe);
- bett.lineTo(breite, tiefe);
- bett.lineTo(0 , 0);
- bett.lineTo(0, tiefe);
- bett.lineTo(breite,tiefe);
- // transformieren:
- AffineTransform t = new AffineTransform();
- t.translate(xPosition, yPosition);
- Rectangle2D umriss = bett.getBounds2D();
- t.rotate(Math.toRadians(orientierung),umriss.getX()+umriss.getWidth()/2,umriss.getY()+umriss.getHeight()/2);
- return t.createTransformedShape(bett);
- }
- public void groesseAendern(int Breite, int Tiefe)
- {
- loesche();
- breite = Breite;
- tiefe = Tiefe;
- zeichne();
- }
- /**
- * 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);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement