Im ersten Beispiel werden an zufällig gewählten Positionen Sterne gezeichnet. Durch eine einfache Umrechnung erhält man mit Hilfe von Zufallszahlen zufällige x- und y-Koordinaten zwischen -180 und 180, die für die Positionierung der Sterne in einem Turle-Fenster sinnvoll sind. |
// Tu13.java import ch.aplu.turtle.*; import java.awt.Color; public class Tu13 { Turtle t = new Turtle(); public Tu13() { t.hideTurtle(); t.clear(Color.blue); t.setPenColor(Color.yellow); for (int i = 0; i < 50; i++) { double x = -180 + 360 * Math.random(); double y = -180 + 360 * Math.random(); star(x, y); } } void star(double x, double y) { t.setPos(x, y); t.fillToPoint(x, y); for (int i = 0; i < 6; i++) { t.forward(10); t.right(140); t.forward(10); t.left(80); } } public static void main(String[] args) { new Tu13(); } } |
clear(Color.blue) |
Der Hintergrund wird mit der blauen Farbe gefärbt |
double x = -180 + 360 * Math.random() |
Math.random() liefert eine Zahl zwischen 0 und 1 mit 16 Dezimalstellen, wobei die Ziffern zufällig sind (z.Bsp. 0.7290853765438503). Damit wir zufällige Koordinaten, die in ein Turtle-Fenster passen, erhalten, multiplizieren wir diese Zahlen mit 360. So ergibt sich eine Zahl zwischen 0 und 360. Durch Addition von -180 erhalten wir Koordinaten zwischen -180 und 180 |
star(x, y) | Aufruf der Methode star mit den Variablenwerten x, y |
setPos(x, y) | Die Turtle wird vor dem Zeichnen des Sterns an eine zufällige Position (x, y) versetzt |
fillToPoint(x, x) | Die Turtle beginnt jeweils an der Position (x, y) ein neues Stern zu zeichnen. Die Methode fillToPoint() füllt die Stern-Figur von diesem Punkt aus |
Im zweiten Beispiel werden mit Hilfe von Zufallszahlen die Stiftfarbe, Länge der gezeichneten Strecke und die Bewegungsrichtug der Turtle festgelegt. So entstehen kleine Kunstwerke. Eine zufällige Farbe wird erzeugt, indem man für den rot-, blau- und grün-RGB-Wert eine ganzzahlige Zufallszahl zwischen 0 und 255 wählt:
|
wrap() |
Wenn die Turtle am Rand des Fensters ankommt, wird sie automatisch auf den gegenüber liegenden Rand des Fensters versetzt (Torussymmetrie) |
Color c = new Color((int)(Math.random() * 255), (int)(Math.random() * 255), 255); |
(int) wandelt eine Dezimalzahl in eine ganze Zahl um, indem die Dezimalstellen abgeschnitten werden. Die Blau-Komponente wird nicht zufällig gewählt, sondern bekommt den höchst möglichen Wert 255. Dadurch erhalten wir eine Grafik, in welcher die blauen Farben überwiegen |
if (Math.random() < 0.5) |
Im Mittel sind 50% der Zufallszahlen kleiner als 0.5 sind, d.h. etwa in Hälfte aller Fälle dreht die Turtle um 90° nach rechts, andernfalls nach links |
forward(60 * Math.random()) | Die Turtle bewegt sich vorwärts um eine Strecke, die eine zufällige Länge zwischen 0 und 60 hat |