Java/Turtle-Grafik
Die folgenden Beispiele basieren auf der in Java geschriebenen Turtle-Grafik-Engine von A. Hermes, die sich problemlos in BlueJ einbinden lässt.
Es fehlen zu den Aufgaben einige Beispielbilder, die ich aus Copyrightgründen nicht einfügen kann.
Inhaltsverzeichnis
Elementare Methoden
- zumStart (x,y) - setzt die Turtle nach (x|y)
- vor (länge) - geht um „länge“-Punkte vorwärts
- drehe (winkel) - dreht bei positiven Zahlen rechts, bei negativen links herum.
- schreibe (text) - schreibt einen String text an die aktuelle Position
- hebeStift() - zeichnet nicht beim Bewegen
- senkeStift() - zeichnet beim Bewegen
- setzeFarbe(Turtle.rot) - Farben: .schwarz, .grün, .blau, .gelb, .rot, .grau, .hellgrau, .orange, .weiß;
Erstes Beispiel
<java> public class Figuren {
// Eigenschaften Turtle t;
// Konstruktor public Figuren() { double x,y; t=new Turtle(); // legt eine neue Turtle mit den Namen "t" an. x = t.liesMaxX(); y = t.liesMaxX(); // Maximale x-und y-Werte t.zumStart(x/2,y/2); // Setzt die Anfangsposition auf die Mitte t.setzeFarbe(Turtle.blau); // legt Farbe fest }
// Methoden public void zeichneQuadrat(int pLänge){ zeichneRechtenWinkel(pLänge); zeichneRechtenWinkel(pLänge); } public void zeichneRechtenWinkel(int pLänge) { t.vor(pLänge); t.drehe(90); t.vor(pLänge); t.drehe(90); } // ... hier weitere Methoden einfügen
} // Ende der Klasse Figuren </java>
Nach Einführung der for-Schleife
Zweites Beispiel: Ein Zahlenstrahl
<java>
public void zeichneZahlenstrahl (int pErsteZahl, int pLetzteZahl) { for (int i=pErsteZahl; i<=pLetzteZahl; i++) { t.vor(20); t.schreibe(""+i); // Trick! Einfache Typumwandlung zu String } }
</java>
Eventsteuerung
<java> import java.awt.event.*; public class Figuren extends Turtle { (...)
public void mouseClicked(java.awt.event.MouseEvent me){ if (me.isMetaDown()) { t.drehe(10); } // Rechte Maustaste? else { if (me.getClickCount()==2) { // Doppelklick? t.drehe(180); // Falls Doppelklick } else { t.vor(10); // Falls einfacher Mausklick } } }
// Alternativ:
public void mouseClicked(java.awt.event.MouseEvent me){ if (me.isMetaDown()) { // rechte Maustaste gedrückt?
t.drehe(10); }
else {
t.vor(10); }
}
</java>
Threads
<java> Ergänzen Sie den Konstruktor von Figuren um folgende Zeilen:
(...) t.zeige();// ab hier neu: TurtleThread turtleThread; turtleThread = new TurtleThread(t); turtleThread.start(); }
Legen Sie eine neue Klasse TurtleThread an
public class TurtleThread extends Thread { Turtle t;
public TurtleThread(Turtle pT) { t = pT; } public void run() { for(int i = 0; i < 30; i++) { try { t.vor(10); sleep(1000); } catch(InterruptedException e) { } } }
} // Ende von TurtleThread </java>
Weblink
- Turtlegrafiklibrary Quelle - turtle.jar lässt sich in BlueJ einbinden.