aboutsummaryrefslogtreecommitdiff
path: root/Info/10/2/Baelle/BlueJ_Projekt/Figur.java
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fischer@muhq.space>2024-05-05 14:36:59 +0200
committerFlorian Fischer <florian.fischer@muhq.space>2024-05-05 14:36:59 +0200
commitaed3ad2011483d36b1f6f6b772a6f300cb967cc0 (patch)
tree7f1543b344bdd783db1d5b079dbd15b3e6a0bf34 /Info/10/2/Baelle/BlueJ_Projekt/Figur.java
parenta91e3342f58a6476e17d9bd172f02b1c7cacf603 (diff)
downloadunterricht-aed3ad2011483d36b1f6f6b772a6f300cb967cc0.tar.gz
unterricht-aed3ad2011483d36b1f6f6b772a6f300cb967cc0.zip
add Baelle project for simple inheritance
Diffstat (limited to 'Info/10/2/Baelle/BlueJ_Projekt/Figur.java')
-rw-r--r--Info/10/2/Baelle/BlueJ_Projekt/Figur.java340
1 files changed, 340 insertions, 0 deletions
diff --git a/Info/10/2/Baelle/BlueJ_Projekt/Figur.java b/Info/10/2/Baelle/BlueJ_Projekt/Figur.java
new file mode 100644
index 00000000..ca38c584
--- /dev/null
+++ b/Info/10/2/Baelle/BlueJ_Projekt/Figur.java
@@ -0,0 +1,340 @@
+/**
+ * Wrapperklasse für die Turtle auf der Zeichenfläche.
+ *
+ * @author Albert Wiedemann
+ * @version 1.0
+ */
+public class Figur
+{
+ /** x-Position der Figur. */
+ private int x;
+ /** y-Position der Figur. */
+ private int y;
+ /** Größe der Figur. */
+ private int größe;
+ /** Farbe der Figur. */
+ private String farbe;
+ /** Sichtbarkeit der Figur. */
+ private boolean sichtbar;
+ /** Drehwinkel (mathemtisch positiver Drehsinn) der Turtle in Grad. */
+ private int winkel;
+ /** Referenz auf das echte Figursymbol. */
+ Zeichenfenster.FigurIntern symbol;
+ /** Referenz auf das Aktionsempfängerobjekt. */
+ Zeichenfenster.AktionsEmpfaenger aktionsEmpfänger;
+
+ /**
+ * Konstruktor der Figur
+ * Erzeugt eine Figur und versetzt sie in einen gültigen Startzustand.
+ */
+ Figur ()
+ {
+ symbol = (Zeichenfenster.FigurIntern) Zeichenfenster.SymbolErzeugen(Zeichenfenster.SymbolArt.figur);
+ symbol.SichtbarkeitSetzen(true);
+ x = symbol.x;
+ y = symbol.y;
+ winkel = symbol.winkel;
+ größe = symbol.b;
+ sichtbar = symbol.sichtbar;
+ aktionsEmpfänger = new Zeichenfenster.AktionsEmpfaenger()
+ {
+ public void Ausführen ()
+ {
+ AktionAusführen();
+ }
+
+ public void Taste (char taste)
+ {
+ TasteGedrückt(taste);
+ }
+
+ public void SonderTaste (int taste)
+ {
+ SonderTasteGedrückt(taste);
+ }
+
+ public void Geklickt (int x, int y, int anzahl)
+ {
+ MausGeklickt(x, y, anzahl);
+ }
+ };
+ Zeichenfenster.AktionsEmpfängerEintragen(aktionsEmpfänger);
+ }
+
+ /**
+ * Methode wird aufgerufen, wenn die Figur handeln soll.
+ * Die vordefinierte Methode tut nichts.
+ */
+ void AktionAusführen()
+ {
+ }
+
+ /**
+ * Die eigentliche Aktionsmethode für gedrückte Tasten.
+ * <br>Muss bei Bedarf von einer Unterklasse überschrieben werden.
+ * @param taste die gedrückte Taste
+ */
+ void TasteGedrückt (char taste)
+ {
+ //System. out. println ("Taste: " + taste);
+ }
+
+ /**
+ * Die eigentliche Aktionsmethode für gedrückte Sondertasten.
+ * <br>Muss bei Bedarf von einer Unterklasse überschrieben werden.
+ * @param taste KeyCode der gedrückten Taste
+ */
+ void SonderTasteGedrückt (int taste)
+ {
+ //System. out. println ("Sondertaste: " + taste);
+ }
+
+ /**
+ * Die eigentliche Aktionsmethode für einen Mausklick.
+ * <br>Muss bei Bedarf von einer Unterklasse überschrieben werden.
+ * @param x x-Position des Mausklicks
+ * @param y y-Position des Mausklicks
+ * @param anzahl Anzahl der aufeinanderfolgenden Mausklicks
+ */
+ void MausGeklickt (int x, int y, int anzahl)
+ {
+ //System. out. println ("Maus: (" + x + "|" + y + "), " + anzahl + " mal");
+ }
+
+ /**
+ * Setzt die Position der Figur.
+ * @param x x-Position der Figur
+ * @param y y-Position der Figur
+ */
+ void PositionSetzen(int x, int y)
+ {
+ this.x = x;
+ this.y = y;
+ symbol.PositionSetzen(x, y);
+ }
+
+ /**
+ * Setzt die Größe des Figurensymbols.
+ * @param größe (neue) Größe
+ */
+ void GrößeSetzen (int größe)
+ {
+ this.größe = größe;
+ symbol.GrößeSetzen(größe, größe);
+ }
+
+ /**
+ * Setzt den Drehwinkel der Figur.
+ * Die Winkelangabe ist in Grad, positive Werte drehen gegen den Uhrzeigersinn,
+ * negative Werte drehen im Uhrzeigersinn (mathematisch positiver Drehsinn), d. h.
+ * 0˚: Figur schaut nach rechts,
+ * 90˚: Figur schaut nach oben,
+ * 180˚: Figur schaut nach links,
+ * 270˚bzw. -90˚: Figur schaut nach unten
+ * @param winkel der (neue) Drehwinkel der Figur
+ */
+ void WinkelSetzen (int winkel)
+ {
+ this.winkel = winkel;
+ symbol.WinkelSetzen(winkel);
+ }
+
+ /**
+ * Schaltet die Sichtbarkeit der Figur ein oder aus.
+ * Erlaubte Parameterwerte: true, false
+ * @param sichtbar (neue) Sichtbarkeit der Figur
+ */
+ void SichtbarkeitSetzen (boolean sichtbar)
+ {
+ this.sichtbar = sichtbar;
+ symbol.SichtbarkeitSetzen(sichtbar);
+ }
+
+ /**
+ * Entfernt die Figur aus dem Zeichenfenster.
+ */
+ void Entfernen ()
+ {
+ Zeichenfenster.AktionsEmpfängerEntfernen(aktionsEmpfänger);
+ symbol.Entfernen();
+ }
+
+ /**
+ * Bringt die Figur eine Ebene nach vorn.
+ */
+ void NachVornBringen ()
+ {
+ symbol.NachVornBringen();
+ }
+
+ /**
+ * Bringt die Figur in die vorderste Ebene.
+ */
+ void GanzNachVornBringen ()
+ {
+ symbol.GanzNachVornBringen();
+ }
+
+ /**
+ * Bringt die Figur eine Ebene nach hinten.
+ */
+ void NachHintenBringen ()
+ {
+ symbol.NachHintenBringen();
+ }
+
+ /**
+ * Bringt die Figur in die hinterste Ebene.
+ */
+ void GanzNachHintenBringen ()
+ {
+ symbol.GanzNachHintenBringen();
+ }
+
+ /**
+ * Setzt die Figur wieder an ihre Ausgangsposition.
+ */
+ void ZumStartpunktGehen()
+ {
+ symbol.ZumStartpunktGehen();
+ x = symbol.x;
+ y = symbol.y;
+ winkel = symbol.winkel;
+ }
+
+ /**
+ * Bewegt die Figur nach vorne.
+ * @param länge Anzahl der Längeneinheiten
+ */
+ void Gehen(double länge)
+ {
+ symbol.Gehen(länge);
+ x = symbol.x;
+ y = symbol.y;
+ }
+
+ /**
+ * Dreht die Figur
+ * @param grad Drehwinkel (mathematisch positiver Drehsinn) im Gradmaß
+ */
+ void Drehen(int grad)
+ {
+ symbol.Drehen(grad);
+ winkel = symbol.winkel;
+ }
+
+ /**
+ * Gibt den aktuellen Winkel der Figur zurück.
+ * Die Winkelangabe ist in Grad, positive Werte drehen gegen den Uhrzeigersinn,
+ * negative Werte drehen im Uhrzeigersinn (mathematisch positiver Drehsinn), d. h.
+ * 0˚: Figur schaut nach rechts,
+ * 90˚: Figur schaut nach oben,
+ * 180˚: Figur schaut nach links,
+ * 270˚bzw. -90˚: Figur schaut nach unten
+ * @return Winkel im Gradmaß
+ */
+ int WinkelGeben()
+ {
+ return winkel;
+ }
+
+ /**
+ * Gibt die x-Koordinate der Figur zurück.
+ * @return x-Koordinate
+ */
+ int XPositionGeben()
+ {
+ return x;
+ }
+
+ /**
+ * Gibt die y-Koordinate der Figur zurück.
+ * @return y-Koordinate
+ */
+ int YPositionGeben()
+ {
+ return y;
+ }
+
+ /**
+ * Testet, ob die Figur eine Grafik-Figur berührt.
+ * @return true, wenn die Figur und eine Grafikfigur überlappen
+ */
+ boolean Berührt ()
+ {
+ return symbol.Berührt();
+ }
+
+ /**
+ * Testet, ob die Figur eine Grafik-Figur in der angegebenen Farbe berührt.
+ * @param farbe die Farbe, die die berührte Figur haben muss
+ * @return true, wenn die Figur und eine Grafikfigur in der angegebenen Farbe überlappen
+ */
+ boolean Berührt (String farbe)
+ {
+ return symbol.Berührt(farbe);
+ }
+
+ /**
+ * Testet, ob die Figur die angegebene Figur berührt.
+ * @param objekt das Objekt, das getestet werden soll
+ * @return true, wenn die Figur die angegebene Grafikfigur überlappen
+ */
+ boolean Berührt (Object objekt)
+ {
+ return symbol.Berührt(objekt);
+ }
+
+ /**
+ * Erzeugt ein neues, rechteckiges Element einer eigenen Darstellung der Figur.
+ * Alle Werte beziehen sich auf eine Figur der Größe 100x100 und den Koordinaten (0|0) in der Mitte des Quadrats
+ * @param x x-Wert der linken oberen Ecke des Rechtecks
+ * @param y y-Wert der linken oberen Ecke des Rechtecks
+ * @param breite Breite des Rechtecks
+ * @param höhe Höhe des Rechtecks
+ * @param farbe (Füll-)Farbe des Rechtecks
+ */
+ void FigurteilFestlegenRechteck (int x, int y, int breite, int höhe, String farbe)
+ {
+ symbol.FigurteilFestlegenRechteck(x, y, breite, höhe, farbe);
+ }
+
+ /**
+ * Erzeugt ein neues, elliptisches Element einer eigenen Darstellung der Figur.
+ * Alle Werte beziehen sich auf eine Figur der Größe 100x100 und den Koordinaten (0|0) in der Mitte des Quadrats
+ * @param x x-Wert der linken oberen Ecke des umgebenden Rechtecks der Ellipse
+ * @param y y-Wert der linken oberen Ecke des umgebenden Rechtecks der Ellipse
+ * @param breite Breite des umgebenden Rechtecks der Ellipse
+ * @param höhe Höhe des umgebenden Rechtecks der Ellipse
+ * @param farbe (Füll-)Farbe der Ellipse
+ */
+ void FigurteilFestlegenEllipse (int x, int y, int breite, int höhe, String farbe)
+ {
+ symbol.FigurteilFestlegenEllipse(x, y, breite, höhe, farbe);
+ }
+
+ /**
+ * Erzeugt ein neues, dreieckiges Element einer eigenen Darstellung der Figur.
+ * Alle Werte beziehen sich auf eine Figur der Größe 100x100 und den Koordinaten (0|0) in der Mitte des Quadrats
+ * @param x1 x-Wert des ersten Punkts des Dreiecks
+ * @param y1 y-Wert des ersten Punkts des Dreiecks
+ * @param x2 x-Wert des zweiten Punkts des Dreiecks
+ * @param y2 y-Wert des zweiten Punkts des Dreiecks
+ * @param x3 x-Wert des dritten Punkts des Dreiecks
+ * @param y3 y-Wert des dritten Punkts des Dreiecks
+ * @param farbe (Füll)Farbe des Dreiecks
+ */
+ void FigurteilFestlegenDreieck (int x1, int y1, int x2, int y2, int x3, int y3, String farbe)
+ {
+ symbol.FigurteilFestlegenDreieck(x1, y1, x2, y2, x3, y3, farbe);
+ }
+
+ /**
+ * Löscht die Vereinbarung für die eigene Darstellung der Figur.
+ * Die Figur wird wieder durch die Originalfigur dargestellt.
+ */
+ void EigeneFigurLöschen()
+ {
+ symbol.EigeneFigurLöschen();
+ }
+}