Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.41 KB | None | 0 0
  1. import java.awt.Shape;
  2. import java.awt.geom.GeneralPath;
  3. import java.awt.geom.Rectangle2D;
  4. import java.awt.geom.AffineTransform;
  5.  
  6.  
  7. /**
  8. * Ein Bett, der manipuliert werden kann und sich selbst auf einer Leinwand zeichnet.
  9. *
  10. * @author Claus Albowski
  11. * @version 2.2 (aug 07)
  12. */
  13. public class Bett
  14. {
  15. private int xPosition;
  16. private int yPosition;
  17. private int orientierung;
  18. private String farbe;
  19. private boolean istSichtbar;
  20. private int breite;
  21. private int tiefe;
  22.  
  23.  
  24. /**
  25. * Erzeuge einen neuen Bett mit einer Standardfarbe und Standardgroesse
  26. * an einer Standardposition. (Standardkonstruktor)
  27. */
  28. public Bett() {
  29. xPosition = 160;
  30. yPosition = 80;
  31. farbe = "blau";
  32. orientierung = 0;
  33. istSichtbar = false;
  34. breite = 40;
  35. tiefe = 40;
  36. }
  37. /**
  38. * Erzeuge einen neuen Bett mit einer Standardfarbe und Standardgroesse
  39. * an einer Position. (AlternativerKonstruktor)
  40. */
  41. public Bett(int x, int y) {
  42. xPosition = x;
  43. yPosition = y;
  44. farbe = "blau";
  45. orientierung = 0;
  46. istSichtbar = false;
  47. breite = 40;
  48. tiefe = 40;
  49. }
  50. /**
  51. * Berechnet das zu zeichnende Shape anhand der gegebenen Daten
  52. * [ Zum Anzeigen der Attributwerte �ber Inspect muss hier die Sichtbarkeit
  53. * auf public gesetzt werden. ]
  54. */
  55.  
  56. private Shape gibAktuelleFigur() {
  57. // einen GeneralPath definieren
  58. GeneralPath bett = new GeneralPath();
  59. bett.moveTo(0 , 0);
  60. bett.lineTo(breite, 0);
  61. bett.lineTo(breite, tiefe);
  62. bett.lineTo(breite, tiefe);
  63. bett.lineTo(0 , 0);
  64. bett.lineTo(0, tiefe);
  65. bett.lineTo(breite,tiefe);
  66.  
  67. // transformieren:
  68. AffineTransform t = new AffineTransform();
  69. t.translate(xPosition, yPosition);
  70. Rectangle2D umriss = bett.getBounds2D();
  71. t.rotate(Math.toRadians(orientierung),umriss.getX()+umriss.getWidth()/2,umriss.getY()+umriss.getHeight()/2);
  72. return t.createTransformedShape(bett);
  73. }
  74.  
  75. public void groesseAendern(int Breite, int Tiefe)
  76. {
  77. loesche();
  78. breite = Breite;
  79. tiefe = Tiefe;
  80. zeichne();
  81. }
  82. /**
  83. * Mache dieses Objekt sichtbar. Wenn es bereits sichtbar ist, tue nichts.
  84. */
  85. public void zeige() {
  86. if (!istSichtbar) {
  87. istSichtbar = true;
  88. zeichne();
  89. }
  90. }
  91.  
  92. /**
  93. * Mache dieses Objekt unsichtbar. Wenn es bereits unsichtbar ist, tue nichts.
  94. */
  95. public void verberge() {
  96. loesche(); // "tue nichts" wird in loesche() abgefangen.
  97. istSichtbar = false;
  98. }
  99.  
  100. /**
  101. * Drehe auf den angegebenen Winkel
  102. */
  103. public void dreheAuf(int neuerWinkel) {
  104. loesche();
  105. orientierung = neuerWinkel;
  106. zeichne();
  107. }
  108.  
  109. /**
  110. * Bewege dieses Objekt horizontal um 'entfernung' Bildschirmpunkte.
  111. */
  112. public void bewegeHorizontal(int entfernung) {
  113. loesche();
  114. xPosition += entfernung;
  115. zeichne();
  116. }
  117.  
  118. /**
  119. * Bewege dieses objekt vertikal um 'entfernung' Bildschirmpunkte.
  120. */
  121. public void bewegeVertikal(int entfernung) {
  122. loesche();
  123. yPosition += entfernung;
  124. zeichne();
  125. }
  126.  
  127.  
  128. /**
  129. * Aendere die Farbe dieses Objektes in 'neueFarbe'.
  130. * Gueltige Angaben sind "rot", "gelb", "blau", "gruen",
  131. * "lila" und "schwarz".
  132. */
  133. public void aendereFarbe(String neueFarbe) {
  134. loesche();
  135. farbe = neueFarbe;
  136. zeichne();
  137. }
  138.  
  139. /**
  140. * Zeichne dieses Objekt mit seinen aktuellen Werten auf den Bildschirm.
  141. */
  142. private void zeichne() {
  143. if (istSichtbar) {
  144. Shape figur = gibAktuelleFigur();
  145. Leinwand leinwand = Leinwand.gibLeinwand();
  146. leinwand.zeichne (
  147. this, // leinwand kennt das Objekt
  148. farbe, // definiert seine Zeichenfarbe
  149. figur); // definiert seinen grafischen Aspekt
  150. leinwand.warte(10);
  151. }
  152. }
  153.  
  154. /**
  155. * Loesche dieses Objekt vom Bildschirm.
  156. */
  157. private void loesche() {
  158. if (istSichtbar){
  159. Leinwand leinwand = Leinwand.gibLeinwand();
  160. leinwand.entferne(this);
  161. }
  162. }
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement