Dokumentation · Version 0.2 · Kapitel 04

Zeichnen

Ein Stift steht in der Mitte der Zeichenfläche und schaut nach oben. Man schickt ihn los, lässt ihn abbiegen — und aus vier Sätzen wird ein Quadrat. Kein Koordinatensystem, keine Klammern: nur Anweisungen, die man auch einem Menschen geben könnte.

Die erste Linie

Gehe und Drehe

Zwei Befehle genügen für fast alles: gehen und abbiegen. Die Schrittzahl ist eine Zahl, der Winkel wird in Grad angegeben.

Ein Winkel
Gehe 100 Schritte vor.
Drehe dich um 90 Grad nach rechts.
Gehe 100 Schritte vor.

Die Wörter dich und nach darf man weglassen — Drehe um 90 Grad rechts. bedeutet dasselbe. Rückwärts geht es ohne Umdrehen mit Gehe 50 Schritte zurück.

Wo der Stift steht

Zu Beginn steht er in der Mitte und schaut nach oben. Gehe zur Mitte. bringt ihn jederzeit dorthin zurück — samt Blickrichtung.

Formen aus Schleifen

Vier Sätze, ein Quadrat

Jede geschlossene Form entsteht, indem man immer wieder dasselbe tut. Die Winkelsumme einer Runde ist stets 360 Grad: Ein Quadrat dreht viermal um 90, ein Dreieck dreimal um 120, ein Fünfeck fünfmal um 72.

Quadrat
Wiederhole 4 Mal:
    Gehe 120 Schritte vor.
    Drehe dich um 90 Grad nach rechts.
Ende.
Beliebige Vielecke — mit einer Aufgabe
Definiere Aufgabe Vieleck mit Ecken und Laenge:
    Merke 360 geteilt durch Ecken als Winkel.
    Zähle von 1 bis Ecken mit i:
        Gehe Laenge Schritte vor.
        Drehe dich um Winkel Grad nach rechts.
    Ende.
Ende.

Führe Vieleck mit 3 und 90 aus.
Führe Vieleck mit 6 und 60 aus.
Führe Vieleck mit 12 und 30 aus.

Stift heben und senken

Bewegen, ohne zu malen

Mit gehobenem Stift bewegt sich der Stift weiter, zieht aber keine Linie. So setzt man ab und beginnt an anderer Stelle neu.

Zwei getrennte Formen
Anmerkung: ein Quadrat …
Wiederhole 4 Mal:
    Gehe 120 Schritte vor.
    Drehe dich um 90 Grad nach rechts.
Ende.

Anmerkung: … ein Stück weiter, ohne Spur …
Hebe den Stift.
Gehe 170 Schritte vor.
Senke den Stift.

Anmerkung: … und ein Dreieck.
Wiederhole 3 Mal:
    Gehe 120 Schritte vor.
    Drehe dich um 120 Grad nach rechts.
Ende.

Farben und Strichstärke

Dreizehn Farben mit deutschen Namen

Farbwechsel
Nimm die Strichstärke 4.

Erstelle eine Liste namens Farben mit "rot" und "orange" und "gold" und "grün" und "blau" und "lila".

Für jeden Ton in Farben:
    Nimm die Farbe Ton.
    Gehe 90 Schritte vor.
    Drehe dich um 60 Grad nach rechts.
Ende.
SatzWirkung
Gehe n Schritte vor. · zurück.bewegt den Stift, malt dabei
Drehe dich um n Grad nach links. · nach rechts.ändert die Richtung
Hebe den Stift. · Senke den Stift.malen aus, malen an
Gehe zur Mitte.zurück zum Start, wieder nach oben
Nimm die Farbe "gold".färbt alles Folgende
Nimm die Strichstärke n.1 bis 50

Zur Wahl stehen rot, blau, grün, gelb, gold, orange, lila, rosa, türkis, braun, grau, schwarz und weiß. Bei einem Tippfehler schlägt Klarsatz die ähnlichste Farbe vor.

Wenn sich etwas ändert

Kleine Abweichungen, große Wirkung

Interessant wird es, wenn bei jeder Wiederholung etwas anders ist. Eine Spirale entsteht, indem die Strecke wächst — und weil 61 Grad knapp an einem Sechstel von 360 vorbeizielt, dreht sich die ganze Figur langsam mit.

Bunte Spirale
Erstelle eine Liste namens Farben mit "gold" und "orange" und "rot" und "rosa"
    und "lila" und "blau" und "türkis" und "grün".

Nimm die Strichstärke 2.
Merke 5 als Laenge.
Merke 0 als Nummer.

Wiederhole 60 Mal:
    Merke den Rest von Nummer geteilt durch 8 als Stelle.
    Nimm die Farbe Element (Stelle plus 1) von Farben.
    Gehe Laenge Schritte vor.
    Drehe dich um 61 Grad nach rechts.
    Setze Laenge auf Laenge plus 4.
    Erhöhe Nummer.
Ende.
Zum Ausprobieren

Ändere die 61 in 60 — dann schließt sich alles zu einem Sechseck. Mit 59 dreht sich die Spirale andersherum. Mit 90 entsteht eine viereckige Schnecke. Dieser eine Wert verändert das ganze Bild.

Eine Uhr, die die Zeit kennt

Zeichnen trifft Uhrzeit

Klarsatz kann die Uhr des Rechners lesen: die aktuelle Stunde, die aktuelle Minute, die aktuelle Sekunde — und ebenso der aktuelle Tag, der aktuelle Monat, das aktuelle Jahr. Damit wird aus dem Zeichnen eine Anzeige.

Die Winkel sind einfacher, als man denkt: Ein voller Kreis hat 360 Grad, eine Stunde ist ein Zwölftel davon (30 Grad), eine Minute ein Sechzigstel (6 Grad). Und weil der Stift nach oben startet und „nach rechts“ im Uhrzeigersinn dreht, passt die Sprache ohne Umrechnung zum Zifferblatt.

Die drei Zeiger
Merke die aktuelle Stunde als Stunde.
Merke die aktuelle Minute als Minute.
Merke die aktuelle Sekunde als Sekunde.

Anmerkung: Stundenzeiger — 30 Grad je Stunde, dazu ein halbes Grad je Minute.
Gehe zur Mitte.
Nimm die Farbe "gold".
Nimm die Strichstärke 7.
Drehe dich um Stunde mal 30 plus Minute geteilt durch 2 Grad nach rechts.
Gehe 65 Schritte vor.

Anmerkung: Minutenzeiger — sechs Grad je Minute.
Gehe zur Mitte.
Nimm die Farbe "weiß".
Nimm die Strichstärke 4.
Drehe dich um Minute mal 6 Grad nach rechts.
Gehe 100 Schritte vor.

Anmerkung: Sekundenzeiger — dünn und rot.
Gehe zur Mitte.
Nimm die Farbe "rot".
Nimm die Strichstärke 2.
Drehe dich um Sekunde mal 6 Grad nach rechts.
Gehe 108 Schritte vor.

Zeige "Es ist " und Stunde und " Uhr " und Minute und ".".

Das vollständige Programm mit Zifferblatt liegt im Spielplatz unter 15 Analoguhr.

Die Zeit steht still — innerhalb eines Durchlaufs

Die Uhr wird je Durchlauf nur einmal abgelesen. Sonst könnte zwischen Minuten- und Sekundenzeiger eine Sekunde vergehen und die Uhr falsch gehen.

Eine Uhr, die wirklich geht

Warte und Lösche die Zeichnung

Bis hierher entstand ein Standbild. Damit daraus eine laufende Anzeige wird, braucht es zwei Sätze: einen, der die Fläche leert, und einen, der eine Pause macht.

Lösche die Zeichnung.Nimmt alles Gemalte weg — der Stift bleibt, wo er ist
Warte 1 Sekunde.Pause, 0 bis 60 Sekunden, auch Warte 0.5 Sekunden.
Das Grundgerüst jeder laufenden Anzeige
Wiederhole solange wahr ist:
    Lösche die Zeichnung.

    Anmerkung: … hier das Bild für diesen Augenblick zeichnen …

    Warte 1 Sekunde.
Ende.

Die vollständige gehende Uhr steht im Spielplatz unter 15 Analoguhr. Sie zeichnet sich jede Sekunde neu — der Sekundenzeiger springt wirklich weiter.

Warum das im Browser funktioniert

Ein Programm mit Endlosschleife wird nie fertig — trotzdem sieht man etwas. Der Spielplatz zeigt jede Ausgabe und jeden Strich in dem Augenblick, in dem er entsteht, statt auf das Ende zu warten. Und der Knopf Ausführen wird währenddessen zu Anhalten.

Gewartete Zeit zählt übrigens nicht als Rechenzeit — sonst würde die Zeitgrenze eine Uhr abwürgen, die brav jede Sekunde einmal schläft.

Kurzform für einfache Fälle

Statt Endlosschleife geht auch: Wiederhole dieses Programm jede Sekunde. (oder alle 5 Sekunden.) als letzter Satz. Dann läuft das ganze Programm im Takt neu. Auf der Kommandozeile ist das die bessere Wahl — dort schreibt --bild uhr.svg bei jedem Takt ein frisches Bild.

Wo das Bild entsteht

Der Interpreter malt nicht selbst

Klarsatz kennt keine Bildschirme. Ein Zeichenbefehl erzeugt nur die Notiz „von hier nach da, in dieser Farbe, in dieser Stärke“ — was daraus wird, entscheidet die Umgebung:

  • Im Spielplatz erscheint über der Ausgabe eine Leinwand, sobald ein Programm etwas zeichnet.
  • Am eigenen Rechner schreibt python3 -m klarsatz --bild bild.svg programm.klar die Zeichnung in eine SVG-Datei, die jeder Browser und jedes Grafikprogramm öffnet.
  • Ohne Zeichenfläche läuft das Programm trotzdem — es entsteht eben kein Bild.
Warum so herum?

Weil die Sprache dadurch überall gleich bleibt. Dasselbe Programm zeichnet im Browser auf eine Leinwand und auf der Kommandozeile in eine Datei, ohne ein einziges geändertes Wort.