<jupyter_start><jupyter_text>Turtle Referenz <NAME>, Departement Mathematik und Informatik, Universität Basel In diesem Notebook werden die wichtigsten Befehle erklärt, die Sie brauchen um mithilfe der JTurtle Bibliothek, Turtle-Grafiken mit Java erstellen zu können.   Setup der Bibliotheken in JupyterDie Turtle Bibliothek ist eine externe Bibliothek von der Java und Jupyter-Notebook zunächst nichts wissen. Damit wir diese Bibliothek verwenden können, müssen wir Sie zuerst im Jupyter-Notebook zur Verfügung stellen. Dies geschieht mit folgendem Befehl<jupyter_code>%mavenRepo bintray https://dl.bintray.com/egp/maven
%maven ch.unibas.informatik:jturtle:0.5<jupyter_output><empty_output><jupyter_text>*Hinweis:* Der obige Befehl entspricht nicht gültigem Java Code. Er kann nur in Jupyter notebooks so verwendet werden.  Als nächstes müssen wir Java noch mitteilen, dass es die Turtle Befehle zur Verfügung stellen soll. Das geschieht mit der Anweisung<jupyter_code>import ch.unibas.informatik.jturtle.Turtle;<jupyter_output><empty_output><jupyter_text>Erzeugen des Turtles, Bild ausgeben und Löschen der Zeichenfläche Um eine neue Zeichnung zu beginnen muss zuerst ein Turtle erstellt werden. Dies geschieht mit dem folgenden Befehl:<jupyter_code>Turtle turtle = new Turtle();<jupyter_output><empty_output><jupyter_text>Das neu erstellte Turtle ist nun unter dem Namen ```turtle``` ansprechbar. Wenn Sie einen anderen Namen wählen, müssen Sie in den  nachfolgenden Befehlen ```turtle``` durch den von Ihnen gewählten Namen ersetzen.  Jedes neue Turtle hat seine eigene, zu Beginn leere, Zeichenfläche. Die Zeichnung können wir ausgeben indem wir den Befehl ```turtle.toImage()``` aufrufen (dabei entspricht der erste Teil vor dem Punkt dem Namen, den wir dem Turtle oben gegeben haben). Da wir noch nichts gezeichnet haben, sehen wir im folgenden Aufruf nur eine leere Zeichenfläche.<jupyter_code>turtle.toImage()<jupyter_output><empty_output><jupyter_text>Falls wir bei einem bestehenden Turtle die Zeichenfläche wieder löschen wollen, machen wir das mit dem Befehl```turtle.clear()```<jupyter_code>turtle.clear();<jupyter_output><empty_output><jupyter_text>Einfache Zeichnungen mit Turtle erstellen Um Zeichnungen zu erstellen müssen wir das Turtle über die Zeichenfläche bewegen. Dazu stehen uns die folgenden Befehle zur Verfügung:* ```turtle.forward(x)``` bewegt das Turtle ```x``` Schritte vorwärts* ```turtle.backward(x)``` bewegt das Turtle ```x``` Schritte rückwärts* ```turtle.turnRight(x)``` dreht das Turtle um ```x``` Grad um die eigene Achse (nach rechts)* ```turtle.turnLeft(x)``` dreht das Turtle um ```x``` Grad um die eigene Achse (nach links) Das Turtle trägt einen Stift bei sich, welchen man mit ```penUp``` und ```penDown``` manipulieren kann. Nachdem ```penDown``` ausgeführt wurde, wird eine Line gezeichnet wenn sich das Turtle bewegt. Nach dem Befehl ```penUp``` kann sich das Turtle bewegen ohne zu zeichen. Das ist im Folgenden illustriert:<jupyter_code>turtle.clear();

turtle.penDown();
turtle.forward(20);
turtle.penUp();
turtle.turnRight(90);
turtle.forward(20);
turtle.penDown();
turtle.turnRight(90);
turtle.forward(20);

turtle.toImage();<jupyter_output><empty_output><jupyter_text>Das Koordinatensystem der Zeichenfläche Zu beginn steht das Turtle immer in der Mitte der Zeichenfläche und schaut nach oben. Auf diese Ausgangsposition kommt man immer wieder durch Aufruf der Methode ```home()``` zurück. Die Zeichenfläche hat die Grösse $200 \times 200$. Von der Ausgangsposition kann man also 100 Einheiten in eine Richtung laufen. Folgender Code veranschaulicht das Koordinatensystem:<jupyter_code>turtle.clear();
turtle.penDown();
turtle.home();
turtle.forward(100);
turtle.backward(200);
turtle.home();
turtle.turnRight(90);
turtle.forward(100);
turtle.backward(200);

turtle.toImage();<jupyter_output><empty_output><jupyter_text>Weitere Befehle Um interessantere Zeichnungen zu erstellen stehen eine Reihe von weiteren Befehlen zur Verfügung. Mit ```penSize``` kann die Strichdicke verändert werden<jupyter_code>turtle.clear();
turtle.penDown();
turtle.forward(20);
turtle.penSize(10);
turtle.forward(20);
turtle.toImage();<jupyter_output><empty_output><jupyter_text>Mittels ```penColor(farbe)``` lässt sich die Farbe ändern. Als Farben werden die im [Java awt](https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html) definierten Farben benutzt:<jupyter_code>turtle.clear();
turtle.penDown();
turtle.penColor(java.awt.Color.BLUE);
turtle.forward(20);
turtle.penColor(java.awt.Color.RED);
turtle.forward(20);
turtle.toImage();<jupyter_output><empty_output><jupyter_text>Mit ```fill``` kann man eine geschlossene Form in der sich das Turtle gerade befindet ausfüllen. *Achtung: Damit dies zuverlässig funktioniert, sollte mindestens die Linienstärke 2 benutzt werden um die Umrisse der Form zu zeichnen.* Der folgende Code illustriert wie ein Dreieck gefüllt werden kann: Zuerst wird das Quadrat gezeichnet, und dann wird das Turtle in das Innere des Dreiecks gesetzt:<jupyter_code>turtle.clear();

// Dreieck zeichnen
turtle.penDown();
turtle.penSize(2); // !Wichtig
turtle.forward(50);
turtle.turnRight(120);
turtle.forward(50);
turtle.turnRight(120);
turtle.forward(50);

// turtle ins innere setzen
turtle.penUp();
turtle.backward(25);
turtle.turnRight(90);
turtle.forward(10);

// ausfüllen
turtle.fill();
turtle.toImage();<jupyter_output><empty_output><jupyter_text>Wenn keine geschlossene Form um das Turtle definiert is, wird die ganze Zeichenfläche gefüllt:<jupyter_code>turtle.clear();
turtle.fill();
turtle.toImage();<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10128388017118402, 'fraction_numerical': 0.011768901569186876, 'mean_word_length': 6.922316384180791, 'pattern_counts': {'":': 0, '<': 46, '<?xml version=': 0, '>': 46, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '11', 'dir': 'jupyter-structured-clean-dedup', 'id': '607144', 'license': 'CC-BY-4.0', 'n_tokens_mistral': 2101, 'n_tokens_neox': 2035, 'n_words': 567, 'path': 'notebooks/Turtle-Referenz.ipynb', 'repo_name': 'Melanie-GymOb/gyminf-programmieren', 'size': '5614'}