Wenn du ein eigenes Muster entwerfen möchtest, welches du dann in einem Raster wiederholt zeichnen lassen kannst, dann beginnst du am besten mit einem Entwurf auf Papier oder einem Grafikprogramm. Ein solcher Entwurf bietet mehrere Vorteile:

  • Mit einem Stift kannst du schnell eine Skizze zeichnen.
  • Wenn du die Figur zeichnest, hast du eine klare Vorstellung davon, welche Schritte bei der Programmierung notwendig werden.
  • Symbole und Farben helfen dir dabei, Muster zu erkennen.

Wie man dabei genau vorgeht, siehst du im folgenden Beispiel:

Beispiel für einen Entwurf auf Papier

Ausgehend von der Figur oben links sieht man schnell, dass es noch drei weitere Figuren gibt, die ganz ähnlich aussehen. Die Figuren links und rechts sind jeweils Spiegelfiguren (gedreht) und die Figuren oben unten sind jeweils Resultate einer Drehung.

Natürlich ist es möglich, in einem Programm alle Figuren einzeln zu programmieren. Das führt aber nicht nur zu einem wenig eleganten Programm, sondern ist auch fehleranfällig. Zum Glück gibt es zwischen den vier Einzelfiguren relativ viele Gemeinsamkeiten.

Aber Überlegen wir einmal, wie wir die Figur oben links programmieren können.

  1. Beginne oben links mit der Ausrichtung 90° (nach rechts).
  2. Zeichne eine Strecke mit Länge s.
  3. Drehe dich um 90° im Uhrzeigersinn.
  4. Zeichne eine Strecke mit der Länge 0.5s.
  5. Drehe dich um 90° im Uhrzeigersinn.
  6. Zeichne eine Strecke mit Länge s.
  7. Drehe dich um 90° im Gegenuhrzeigersinn.
  8. Zeichne eine Strecke mit Länge 0.5s.
  9. Drehe dich um 90° im Gegenuhrzeigersinn.
  10. Zeichne eine Strecke mit Länge s.

Das entsprechende Programm könnte so aussehen:

Programm für Figur

Bei der zweiten Figur (oben rechts) können wir den gleichen Ablauf verwenden, nur beginnen wir an einer anderen Position und in einer anderen Richtung.

  1. Beginne oben links mit der Ausrichtung 90° (nach rechts).
  2. Bewege dich um die Länge s.
  3. Drehe dich um 90° im Uhrzeigersinn.
  4. Zeichne eine Strecke mit Länge s.
  5. ...

Im Gegensatz zur ersten Figur sind also nur zwei neue Schritte dazugekommen.

Angepasstes Programm

Wenn wir die Figur oben links mit der Figur unten rechts vergleichen, dann sehen wir, dass die Figur bei der Startposition nicht nach rechts, sondern nach unten weisst (+90°). Ausserdem ist die Abfolge der Winkel vertauscht. Währen diese bei der oberen Figuren nach dem Muster UUGG (Uhrzeiger- und Gegenuhrzeigersinn) verläuft, ist die Reihenfolge bei der unteren Figur gerade umgekehrt, also GGUU.

Für die zusätzliche Drehung um 90° müssen wir einfach den Winkel um 90° vergrössern, bei den Winkelangaben verwenden wir die Gegenzahl.

Weitere Anpassungen im Programm

Nun haben wir aber immer noch drei, respektive vier unterschiedliche Varianten. Deshalb schreiben wir unser Programm mit Variablen und bedingten Anweisungen jetzt noch so, um, dass alle Varianten aus einem Programm entstehen können.

Dazu verwenden wir zwei zusätzliche Konstruktionen in unserem Programm:

Blöcke, die unser Programm flexibler machen

Der obere Block hilft uns, die Varianten oben und unten zusammenzuführen. Dazu definieren wir eine zusätzliche Variable, die zufällig den Wert 1 oder -1 annimmt, abhängig davon, wie gross die Zufallszahl im if-Block ist. Ausserdem sorgen wir noch dafür, dass am Anfang unseres Programms die Ausrichtung stimmt (90° oder 180°).

Der untere Block hilft uns, die Varianten links und rechts zusammenzuführen, indem der Ausgangspunkt und die Ausgangsrichtung angepasst werden. 

Damit haben wir alle vier Varianten in einem Programm  ohne unnötige Wiederholungen notiert. Der fertige Programmblock kann dann etwa so aussehen:

Fertiges Programm

Zum Schluss setzen wir unser Programm noch in die entsprechenden Blöcke ein und schauen, was grössere Muster wir aus den vier Varianten bilden können.

Resultat unseres Programms

Weil wir mit einem von Hand gezeichneten Entwurf angefangen haben und dann unser Vorgehen sorgfältig geplant haben, sind wir vergleichsweise schnell ans Ziel gelangt. Hätten wir einfach einmal darauf losprogrammiert, läge jetzt wahrscheinlich immer noch kein Ergebnis vor.

Last modified: Wednesday, 19 May 2021, 2:39 PM