Meister Pyoogway

Aufgabe

In dieser Aufgabe geht es darum, eine erste spaßige Erfahrung mit Python-Modulen zu machen. Vor allem geht es darum, zu üben, wie man sich in Dokumentationen einarbeitet. Dazu schauen wir uns das Modul turtle an, mit dem man relativ einfach Muster zeichnen kann. Um auf der VM turtle zu nutzen, müsst ihr zusätzlich das Packet python3-tk installieren (mit sudo apt install python3-tk). Danach könnt ihr turtle in Python ganz einfach mit import turtle in euer Projekt importieren.

Story: Meister Pyoogway hat eine Weisheit erlangt. Anstatt wie jedes andere Tier mit Pinsel und Papier zu zeichnen (langweilig), befestigt man eine Hacke am Hinterteil und läuft dann auf einem großen Feld hin und her (viel cooler). Damit dabei sinnvolle Zeichnungen entstehen, befolgt man spezielle Laufalgorithmen. Hilf Meister Pyoogway, den Leuten im Tal des Pythons von dieser Technik zu überzeugen, indem du ihm passende Algorithmen schreibst!

1.

Zunächst müssen Sie sich in turtle einarbeiten. Die offizielle Dokumentation finden Sie hier. Beantworten Sie folgende Fragen:

  • Nach welchem Prinzip zeichnet man in turtle?
  • Was tun die folgenden Methoden und welche Parameter benötigen diese dazu?
    1. forward
    2. backward
    3. right
    4. left
    5. circle
    6. up
    7. down
  • Was tun diese Funktionsaufrufe?
    1. color("green")
    2. shape("turtle")
  • Wie kann man verhindern, dass das Fenster sofort nach Programmende geschlossen wird?
2.

Entwickeln Sie nun Methoden, um die unten gelisteten Muster zu zeichnen. Die Größe der Muster soll mit passenden Parametern einstellbar sein:

  1. Ein Quadrat 🟦
  2. Ein gleichseitiges Dreieck 🔺
  3. Ein Würfel 🧊
  4. Ein überraschter Smiley 😮
  5. Ein Herz ❤️
Bonus (leicht):

Füllen Sie die Muster mit Farbe! Dazu benötigen Sie weitere Methoden - schauen Sie in die Dokumentation!

Bonus 2 (mittel bis extrem schwer):

Zeichnen Sie zusätzlich folgende Muster:

  • (Revolutionärer großer) Würfel mit einem Herzen auf der Vorderseite (mittel schwer)

Diese folgenden Muster sind extrem schwer und wurden nur inkludiert um zu zeigen, was man so abgespactes zeichnen kann mit (rekursiven) Algorithmen.

  • Koch-Kurve1
  • Pythagoras-Baum2
3.

Schreiben Sie ein Programm, mit dem man die Schildkröte zur Laufzeit steuern kann.

Tipp für 2.

Achtung Spoiler!

Ein Quadrat lässt sich ganz einfach zeichnen:

import turtle as t

def draw_square(length):
    # Zeichne vier Seiten die...
    for i in range(4):
      # ... jeweils 'length' lang und
      t.forward(length)
      # und orthogonal zueinander sind
      t.right(90)

Wenn man ein Quadrat zeichnen kann, kann man ganz einfach auch ein Würfel zeichnen (Man braucht den guten alten Pythagoras (und somit einen Weg, um eine Quadratwurzel zu berechnen: from math import sqrt (Wow, zwei Module in einem Projekt!))).

Überlegen Sie sich beim gleichseitigen Dreieck, wie das noch mal mit den Winkel war.

Für den Smily benötigen Sie die circle Methode.

Für das Herz lässt sich die circle Methode auch nutzen oder man implementiert eine 2-D Herzfunktion (siehe https://mathworld.wolfram.com/HeartCurve.html) und lässt die Schildkröte mittels der Methode setpos von Punkt zu Punkt springen (definitiv cooler und meiner Meinung nach sogar einfacher).

Tipp für 3.

Achtung Spoiler!

Sie können dazu die input Methode verwenden.