~~NOTOC~~ ====== Turtle-Grafik ====== Turtle-Grafik meint, dass man mit einer "Turtle" (alias Schildkröte), die über den Bildschirm "läuft", eine Zeichnung anfertigt. Man kann dieser Turtle Befehle wie "Gehe 100 Pixel vorwärts!" oder "Drehe dich um 30 Grad nach rechts!" geben. Die Turtle zeichnet mit einem Stift, den sie auf Befehl anhebt bzw. absenkt. ===== Haus des Nikolaus auf Papier ===== Der folgende Pseudocode lässt die Turtle ein Quadrat der Seitenlänge ''a = 100'' zeichnen: a = 100 Gehe um a Pixel vorwärts! Drehe dich um 90 Grad nach links! Gehe um a Pixel vorwärts! Drehe dich um 90 Grad nach links! Gehe um a Pixel vorwärts! Drehe dich um 90 Grad nach links! Gehe um a Pixel vorwärts! Zeichne das Haus des Nikolaus ohne Abzusetzen auf ein Blatt Papier. Übersetze deine Zeichnung in Pseudocode für die Turtle und schreibe diesen auf. Nimm dabei an, dass die Turtle anfangs nach rechts schaut. ===== Turtle-Befehle kennenlernen ===== Das folgende Programm vermittelt dir die wichtigsten Turtle-Befehle. Wenn du willst, kannst du es abspeichern und z. B. in Visual Studio Code laufen lassen. from turtle import * # Importiert die Turtle-Befehle a = 100 forward(a) left(90) pensize(10) forward(3 * a) right(90) pencolor("blue") forward(a) left(90) penup() backward(3 * a) pendown() forward(2 * a) exitonclick() # Sorgt dafür, dass das Zeichenfenster nicht sofort nach dem Zeichnen geschlossen wird, # sondern erst nach Anklicken des Zeichenfensters. ===== Haus des Nikolaus auf dem Bildschirm: Pseudocode in Python-Programm verwandeln ===== Schreibe nun ein neues Programm, das das Haus des Nikolaus **mit Grundseite der Länge** ''a'' zeichnet (ohne Abzusetzen soll jede Linie nur einmal gezeichnet werden). Die Variable ''a'' soll am Anfang des Programms durch ''a = 100'' definiert werden. Wenn man später den Wert der Variablen ''a'' verändert, soll sich die Grösse der Zeichnung entsprechend ändern! Das Dach soll rot gezeichnet werden, der Rest in einer anderen Farbe deiner Wahl, die Stiftdicke soll 10 betragen. Empfehlung: Speichere die Länge der Diagonalen in einer Variablen ''d''. Für eine genaue Zeichnung benötigst du $\sqrt{2}=2^{0.5}$, was du in Python per ''2**0.5'' erhältst. {{:lehrkraefte:snr:informatik:glf22:python:nikolaus.png?nolink&200 |}} ===== $n$-Eck zeichnen ===== Ergänze das folgende Programm so, dass ein ''n''-Eck der Seitenlänge ''a'' gezeichnet wird. Teste dein Programm, indem du die Werte von ''n'' und ''a'' änderst. {{:lehrkraefte:snr:informatik:glf22:python:7-eck.png?nolink&200 |}} Verwende eine while-Schleife. In jedem Schleifendurchlauf wird eine Seite des $n$-Ecks gezeichnet und die Turtle dreht sich um den richtigen Winkel. Um welchen Winkel hat sich die Turtle insgesamt gedreht, wenn sie das gesamte $n$-Eck gezeichnet hat und wie am Anfang ausgerichtet dasteht? Einmal um die eigene Achse, also um $360^\circ$. Da sie sich $n$-mal um denselben Winkel gedreht hat, dreht sie sich nach $\frac{360^\circ}n$ from turtle import * n = 7 a = 100 ===== Spirale zeichnen ===== Schreibe ein Python-Programm, das eine "quadratische Spirale" mit der Turtle zeichnet, und zwar von innen beginnend: Die kleinste Seite soll ''a'' lang sein, die Seitenlänge soll jeweils um ''10'' wachsen und es sollen ''anzahl'' Linien gezeichnet werden. Beispielsweise soll für ''a = 30'' und ''anzahl = 20'' die folgende Zeichnung entstehen. Verwende eine while-Schleife, die ''anzahl'' Mal durchlaufen wird. In jedem Schleifendurchlauf wird eine Linie der Länge ''a'' gezeichnet. Die Variable ''a'' ist so anzupassen, dass die Linienlänge jeweils um 10 grösser wird. Du kannst auch das obige $n$-Eck-Programm (für $n=4$) geeignet veändern. {{:lehrkraefte:snr:informatik:glf22:python:spirale.png?nolink&200 |}} Bonus: * Kannst du am Ende die Gesamtlänge der gezeichneten Spirale ausgeben? (im normalen Terminal per ''print(...)'') * Ändere dein Programm so, dass die folgenden Bilder gezeichnet werden ("Sechseck-Spirale" und "leicht verdrehte" Version davon). {{:lehrkraefte:snr:informatik:glf22:python:sechseck-spirale.png?nolink&200 |}} {{:lehrkraefte:snr:informatik:glf22:python:sechseck-spirale-verdreht.png?nolink&200 |}} ====== Bonus-Material ====== Male eine nette Zeichnung deiner Wahl mit der Turtle! Male ein Herz! Hinweis: Nützliche Befehle findest du hier: https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:snr:informatik:glf22:python:turtle#herz_zeichnen Male eine dreidimensionales Haus (des Nikolaus)! ===== Wer mehr wissen will ===== Weitere Befehle (etwa ''setposition()'', ''hideturtle()'', ''showturtle()'', ''write(...)'') werden in der offiziellen Dokumentation der Turtle-Bibliothek erklärt: https://docs.python.org/3/library/turtle.html Wem die Turtle zu langsam zeichnet: ''tracer(0, 0)'' vor allen Zeichnebefehlen, ''update()'' am Ende (oder zwischendurch) zum Anzeigen. Welche Farbwörter man verwenden darf, findet man hier: https://www.tcl.tk/man/tcl8.4/TkCmd/colors.html ===== Link zur Kursseite ===== [[lehrkraefte:snr:informatik:glf23|Zur Kursseite]]