diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2024-05-05 14:36:59 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2024-05-05 14:36:59 +0200 |
| commit | aed3ad2011483d36b1f6f6b772a6f300cb967cc0 (patch) | |
| tree | 7f1543b344bdd783db1d5b079dbd15b3e6a0bf34 /Info/10/2/Baelle/BlueJ_Projekt/Turtle.java | |
| parent | a91e3342f58a6476e17d9bd172f02b1c7cacf603 (diff) | |
| download | unterricht-aed3ad2011483d36b1f6f6b772a6f300cb967cc0.tar.gz unterricht-aed3ad2011483d36b1f6f6b772a6f300cb967cc0.zip | |
add Baelle project for simple inheritance
Diffstat (limited to 'Info/10/2/Baelle/BlueJ_Projekt/Turtle.java')
| -rw-r--r-- | Info/10/2/Baelle/BlueJ_Projekt/Turtle.java | 341 |
1 files changed, 341 insertions, 0 deletions
diff --git a/Info/10/2/Baelle/BlueJ_Projekt/Turtle.java b/Info/10/2/Baelle/BlueJ_Projekt/Turtle.java new file mode 100644 index 00000000..7fb912a0 --- /dev/null +++ b/Info/10/2/Baelle/BlueJ_Projekt/Turtle.java @@ -0,0 +1,341 @@ +/** + * Wrapperklasse für die Turtle auf der Zeichenfläche. + * + * @author Albert Wiedemann + * @version 1.0 + */ +public class Turtle +{ + /** x-Position der Turtle. */ + private int x; + /** y-Position der Turtle. */ + private int y; + /** Größe der Turtle. */ + private int größe; + /** Farbe der Turtle. */ + private String farbe; + /** Sichtbarkeit der Turtles. */ + private boolean sichtbar; + /** Drehwinkel (mathemtisch positiver Drehsinn) der Turtle in Grad. */ + private int winkel; + /**Stiftposition*/ + private boolean stiftUnten; + /** Referenz auf das echte Turtlesybol. */ + Zeichenfenster.TurtleIntern symbol; + /** Referenz auf das Aktionsempfängerobjekt. */ + Zeichenfenster.AktionsEmpfaenger aktionsEmpfänger; + + /** + * Konstruktor der Turtle + * Erzeugt eine Turtle und versetzt sie in einen gültigen Startzustand. + */ + Turtle () + { + symbol = (Zeichenfenster.TurtleIntern) Zeichenfenster.SymbolErzeugen(Zeichenfenster.SymbolArt.turtle); + symbol.SichtbarkeitSetzen(true); + x = symbol.x; + y = symbol.y; + winkel = symbol.winkel; + größe = symbol.b; + stiftUnten = symbol.stiftUnten; + 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 Turtle 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 Turtle. + * @param x x-Position der Turtle + * @param y y-Position der Turtle + */ + void PositionSetzen(int x, int y) + { + this.x = x; + this.y = y; + symbol.PositionSetzen(x, y); + } + + /** + * Setzt die Größe des Turtlesymbols. + * @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 die Farbe der Linie. + * Erlaubte Farben sind: + * "weiß", "weiss", "rot", "grün", "gruen", "blau", "gelb", + * "magenta", "cyan", "hellgelb", "hellgrün", "hellgruen", + * "orange", "braun", "grau", "schwarz" + * Alle anderen Eingaben werden auf die Farbe schwarz abgebildet. + * @param farbe (neue) Farbe + */ + void FarbeSetzen (String farbe) + { + this.farbe = farbe; + symbol.FarbeSetzen(farbe); + } + + /** + * Setzt den Drehwinkel der Turtle. + * Die Winkelangabe ist in Grad, positive Werte drehen gegen den Uhrzeigersinn, + * negative Werte drehen im Uhrzeigersinn (mathematisch positiver Drehsinn), d. h. + * 0˚: Turtle schaut nach rechts, + * 90˚: Turtle schaut nach oben, + * 180˚: Turtle schaut nach links, + * 270˚bzw. -90˚: Turtle schaut nach unten + * @param winkel der (neue) Drehwinkel der Turtle + */ + void WinkelSetzen (int winkel) + { + this.winkel = winkel; + symbol.WinkelSetzen(winkel); + } + + /** + * Schaltet die Sichtbarkeit der Turtle ein oder aus. + * Erlaubte Parameterwerte: true, false + * @param sichtbar (neue) Sichtbarkeit der Turtle + */ + void SichtbarkeitSetzen (boolean sichtbar) + { + this.sichtbar = sichtbar; + symbol.SichtbarkeitSetzen(sichtbar); + } + + /** + * Entfernt die Turtle aus dem Zeichenfenster. + */ + void Entfernen () + { + Zeichenfenster.AktionsEmpfängerEntfernen(aktionsEmpfänger); + symbol.Entfernen(); + } + + /** + * Bringt die Turtle eine Ebene nach vorn. + */ + void NachVornBringen () + { + symbol.NachVornBringen(); + } + + /** + * Bringt die Turtle in die vorderste Ebene. + */ + void GanzNachVornBringen () + { + symbol.GanzNachVornBringen(); + } + + /** + * Bringt die Turtle eine Ebene nach hinten. + */ + void NachHintenBringen () + { + symbol.NachHintenBringen(); + } + + /** + * Bringt die Turtle in die hinterste Ebene. + */ + void GanzNachHintenBringen () + { + symbol.GanzNachHintenBringen(); + } + + /** + * Setzt die Turtle wieder an ihre Ausgangsposition. + */ + void ZumStartpunktGehen() + { + symbol.ZumStartpunktGehen(); + x = symbol.x; + y = symbol.y; + winkel = symbol.winkel; + } + + /** + * Bewegt die Turtle 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 Turtle + * @param grad Drehwinkel (mathematisch positiver Drehsinn) im Gradmaß + */ + void Drehen(int grad) + { + symbol.Drehen(grad); + winkel = symbol.winkel; + } + + /** + * Versetzt Zeichenfläche und Turtle in den Ausgangszustand + */ + void Löschen() + { + symbol.Löschen(); + } + + /** + * Turtle wechselt in den Modus "nicht zeichnen" + */ + void StiftHeben() + { + symbol.StiftHeben(); + stiftUnten = false; + } + + /** + * Turtle wechselt in den Modus "zeichnen" + */ + void StiftSenken() + { + symbol.StiftSenken(); + stiftUnten = true; + } + + /** + * Gibt den aktuellen Winkel der Turtle zurück. + * Die Winkelangabe ist in Grad, positive Werte drehen gegen den Uhrzeigersinn, + * negative Werte drehen im Uhrzeigersinn (mathematisch positiver Drehsinn), d. h. + * 0˚: Turtle schaut nach rechts, + * 90˚: Turtle schaut nach oben, + * 180˚: Turtle schaut nach links, + * 270˚bzw. -90˚: Turtle schaut nach unten + * @return Winkel im Gradmass + */ + int WinkelGeben() + { + return winkel; + } + + /** + * Gibt die x-Koordinate der Turtle zurück + * @return x-Koordinate + */ + int XPositionGeben() + { + return x; + } + + /** + * Gibt die y-Koordinate der Turtle zurück + * @return y-Koordinate + */ + int YPositionGeben() + { + return y; + } + + /** + * Schaltet die Sichtbarkeit des Turtlesymbols ein oder aus. + * Erlaubte Parameterwerte: true, false + * @param sichtbar (neue) Sichtbarkeit des Turtlesymbols + */ + void SichtbarkeitFürSymbolSetzen (boolean sichtbar) + { + symbol.SichtbarkeitFürSymbolSetzen(sichtbar); + } + + /** + * Testet, ob die Turtle eine Figur berührt. + * @return true, wenn die Turtlekoordinaten innerhalb einer Grafikfigur sind + */ + boolean Berührt () + { + return symbol.Berührt(); + } + + /** + * Testet, ob die Turtle eine Figur in der angegebenen Farbe berührt. + * @param farbe die Farbe, die die berührte Figur haben muss. + * @return true, wenn die Turtlekoordinaten innerhalb einer Grafikfigur in der angegebenen Farbe sind + */ + boolean Berührt (String farbe) + { + return symbol.Berührt(farbe); + } + + /** + * Testet, ob die Turtle die angegebene Figur berührt. + * @param objekt das Objekt, das getestet werden soll. + * @return true, wenn die Turtlekoordinaten innerhalb der angegebenen Grafikfigur sind + */ + boolean Berührt (Object objekt) + { + return symbol.Berührt(objekt); + } +} |
