ÜbungBaut auf Turtle: Bäume und Kurven auf
icon: bi-flower1 kind: uebung duration: 2 Doppelstunden languages: [ruby, python, javascript] idea: Farben aus Zahlen, Merken und Zurückkehren, Zufall und Pflanzen, die aus Wörtern wachsen curriculum: "Sek I: Algorithmisches Problemlösen (Zeichenkettenbearbeitung), Digitale Bilder und Visualisierung (Turtle-Grafik, Farbmodelle, rekursive Algorithmen für Grafiken)" topics: [computergrafik, zeichenketten, grammatiken] requires: [turtle-2] age: Oberstufe

Turtle: Pflanzen, Zufall und Farbe

Die Schildkröte bekommt drei neue Werkzeuge: Farben aus Zahlen, ein Gedächtnis für Stellen, zu denen sie zurückkehren kann, und den Zufall. Damit wachsen Bäume, die sich im Wind biegen, Wiesen, in denen kein Halm dem anderen gleicht, und Pflanzen, die aus einem einzigen Wort entstehen. Am Ende zeichnest du, was dir gefällt.

Die Befehle der Schildkröte kennst du aus Turtle: Bilder aus Befehlen, Bäume, die sich selbst enthalten, aus Turtle: Bäume und Kurven.

1. Farben aus Zahlen

Bisher hatten Farben Namen. Gibst du color stattdessen eine Zahl, sucht sich die Schildkröte die Farbe auf dem Farbkreis aus: 0 ist Rot, 60 Gelb, 120 Grün, 180 Türkis, 240 Blau, 300 Lila, und bei 360 ist sie wieder bei Rot. Eine Zahl, die wächst, lässt die Farbe darum einmal durch den Regenbogen wandern.

color 0      # rot
color 120    # grün
color 200    # ein helles Blau
color(0)      # rot
color(120)    # grün
color(200)    # ein helles Blau
color(0);      // rot
color(120);    // grün
color(200);    // ein helles Blau
Aufgabe 1Eine Sonne aus allen FarbenEinstieg

Die Sonne aus 36 Strahlen ist schon da, noch schwarz. Gib jedem Strahl seine eigene Farbe: Der erste ist rot, color 0, und jeder nächste liegt 10 Grad weiter im Farbkreis.

forward 100back 100left 90right 90color 200
Tipp

Die Farbe kommt vor den Strahl, als erste Zeile in der Schleife. Ihre Zahl hängt davon ab, der wievielte Strahl es ist: i.

Nächster Tipp

Strahl 0 hat die Farbe 0, Strahl 1 die Farbe 10, Strahl 2 die Farbe 20: color i * 10.

Aufgabe 1Eine Sonne aus allen FarbenEinstieg

Die Sonne aus 36 Strahlen ist schon da, noch schwarz. Gib jedem Strahl seine eigene Farbe: Der erste ist rot, color(0), und jeder nächste liegt 10 Grad weiter im Farbkreis.

forward(100)back(100)left(90)right(90)color(200)
Tipp

Die Farbe kommt vor den Strahl, als erste Zeile in der Schleife. Ihre Zahl hängt davon ab, der wievielte Strahl es ist: i.

Nächster Tipp

Strahl 0 hat die Farbe 0, Strahl 1 die Farbe 10, Strahl 2 die Farbe 20: color(i * 10).

Aufgabe 1Eine Sonne aus allen FarbenEinstieg

Die Sonne aus 36 Strahlen ist schon da, noch schwarz. Gib jedem Strahl seine eigene Farbe: Der erste ist rot, color(0), und jeder nächste liegt 10 Grad weiter im Farbkreis.

forward(100)back(100)left(90)right(90)color(200)
Tipp

Die Farbe kommt vor den Strahl, als erste Zeile in der Schleife. Ihre Zahl hängt davon ab, der wievielte Strahl es ist: i.

Nächster Tipp

Strahl 0 hat die Farbe 0, Strahl 1 die Farbe 10, Strahl 2 die Farbe 20: color(i * 10).

Aufgabe 2Eine Spirale durch den FarbkreisÜbung

Zeichne eine Spirale aus 120 Linien: Linie i ist 2 * i Schritte lang (die erste, Linie 0, also gar nicht), und nach jeder dreht sich die Schildkröte 59 Grad nach links. Die Farben laufen einmal durch den ganzen Farbkreis: Linie i hat die Farbe 3 * i.

forward 100back 100left 90right 90color 200
Tipp

Eine Schleife mit 120 Durchläufen, die mitzählt, der wievielte es ist. Darin drei Befehle: die Farbe, die Linie, die Drehung.

Nächster Tipp

Die Länge und die Farbe rechnest du aus i aus: color i * 3 und forward i * 2.

Aufgabe 2Eine Spirale durch den FarbkreisÜbung

Zeichne eine Spirale aus 120 Linien: Linie i ist 2 * i Schritte lang (die erste, Linie 0, also gar nicht), und nach jeder dreht sich die Schildkröte 59 Grad nach links. Die Farben laufen einmal durch den ganzen Farbkreis: Linie i hat die Farbe 3 * i.

forward(100)back(100)left(90)right(90)color(200)
Tipp

Eine Schleife mit 120 Durchläufen, die mitzählt, der wievielte es ist. Darin drei Befehle: die Farbe, die Linie, die Drehung.

Nächster Tipp

Die Länge und die Farbe rechnest du aus i aus: color(i * 3) und forward(i * 2).

Aufgabe 2Eine Spirale durch den FarbkreisÜbung

Zeichne eine Spirale aus 120 Linien: Linie i ist 2 * i Schritte lang (die erste, Linie 0, also gar nicht), und nach jeder dreht sich die Schildkröte 59 Grad nach links. Die Farben laufen einmal durch den ganzen Farbkreis: Linie i hat die Farbe 3 * i.

forward(100)back(100)left(90)right(90)color(200)
Tipp

Eine Schleife mit 120 Durchläufen, die mitzählt, der wievielte es ist. Darin drei Befehle: die Farbe, die Linie, die Drehung.

Nächster Tipp

Die Länge und die Farbe rechnest du aus i aus: color(i * 3) und forward(i * 2).

Zwischen zwei Farben liegen viele andere. Mit zwei Namen und einem Anteil dazwischen mischt color sie: Beim Anteil 0 ist es ganz die erste, bei 1 ganz die zweite, bei 0,5 genau die Mitte.

color "gold", "crimson", 0.25    # ein Viertel des Wegs von Gold nach Rot
color("gold", "crimson", 0.25)    # ein Viertel des Wegs von Gold nach Rot
color("gold", "crimson", 0.25);    // ein Viertel des Wegs von Gold nach Rot
Aufgabe 3Ein Fächer von Gold nach RotÜbung

Zeichne einen Fächer aus 19 Strahlen, jeder 150 Schritte lang und 10 Grad weiter gedreht als der davor: der erste nach rechts, der letzte nach links. Der erste Strahl ist ganz "gold", der letzte ganz "crimson", und dazwischen ändert sich die Farbe gleichmäßig.

forward 100back 100left 90right 90color "gold", "red", 0.5
Tipp

Wie die Sonne, nur mit 19 Strahlen und einer gemischten Farbe: color "gold", "crimson", anteil, mit dem Anteil 0 beim ersten Strahl und 1 beim letzten.

Nächster Tipp

Der letzte Strahl ist Strahl 18. Der Anteil ist also i / 18. In Ruby ist i / 18 eine ganze Zahl, fast immer 0: Schreib i / 18.0.

Aufgabe 3Ein Fächer von Gold nach RotÜbung

Zeichne einen Fächer aus 19 Strahlen, jeder 150 Schritte lang und 10 Grad weiter gedreht als der davor: der erste nach rechts, der letzte nach links. Der erste Strahl ist ganz "gold", der letzte ganz "crimson", und dazwischen ändert sich die Farbe gleichmäßig.

forward(100)back(100)left(90)right(90)color("gold", "red", 0.5)
Tipp

Wie die Sonne, nur mit 19 Strahlen und einer gemischten Farbe: color("gold", "crimson", anteil), mit dem Anteil 0 beim ersten Strahl und 1 beim letzten.

Nächster Tipp

Der letzte Strahl ist Strahl 18. Der Anteil ist also i / 18.

Aufgabe 3Ein Fächer von Gold nach RotÜbung

Zeichne einen Fächer aus 19 Strahlen, jeder 150 Schritte lang und 10 Grad weiter gedreht als der davor: der erste nach rechts, der letzte nach links. Der erste Strahl ist ganz "gold", der letzte ganz "crimson", und dazwischen ändert sich die Farbe gleichmäßig.

forward(100)back(100)left(90)right(90)color("gold", "red", 0.5)
Tipp

Wie die Sonne, nur mit 19 Strahlen und einer gemischten Farbe: color("gold", "crimson", anteil), mit dem Anteil 0 beim ersten Strahl und 1 beim letzten.

Nächster Tipp

Der letzte Strahl ist Strahl 18. Der Anteil ist also i / 18.

Auch das Papier bekommt eine Farbe: background nimmt dieselben Farben wie color, einen Namen, eine Zahl aus dem Farbkreis oder eine Mischung. Ein Klick auf color oder background über dem Papier öffnet Farben zum Aussuchen, darunter die Palette Cling.

2. Merken und zurückkehren

Beim Baum in »Bäume und Kurven« ist die Schildkröte nach jedem Ast den ganzen Weg zurückgelaufen und hat sich zurückgedreht. Einfacher geht es, wenn sie sich merkt, wo sie war: push merkt sich, wo die Schildkröte steht und wohin sie schaut, dazu ihren Stift, ihre Farbe und ihre Breite. pop bringt sie dorthin zurück, ohne zu zeichnen.

Merkt sie sich mehrere Stellen, kommt bei pop immer die zuletzt gemerkte zuerst zurück, wie bei einem Stapel Zettel, von dem man den obersten nimmt. In der Informatik heißt so ein Stapel Stack. Dasselbe push und pop kennen auch Zeichenprogramme: Ein Canvas im Browser merkt sich seinen Zustand mit save() und holt ihn mit restore() zurück.

Vermutung 4Wo steht die Schildkröte?

Die Schildkröte schaut nach rechts. Das Programm: forward 100, push, left 90, forward 50, pop, forward 50. Wo steht sie am Ende, und wohin schaut sie?

Wo steht die Schildkröte?

Hier geht es weiter, sobald du deine Antwort oben abgegeben hast.

Nach pop steht die Schildkröte wieder dort, wo sie bei push stand, 100 Schritte rechts vom Anfang, und schaut wieder nach rechts. Die kurze Linie nach oben bleibt stehen; der letzte Strich verlängert die erste Linie auf 150 Schritte.

Aufgabe 5Ein Baum ohne RückwegÜbung

Schreib tree(size, depth) für den Baum aus »Bäume und Kurven« noch einmal, diesmal ohne back und ohne zurückzudrehen: Vor jedem Ast merkt sich die Schildkröte mit push, wo sie ist, und kehrt nach ihm mit pop dorthin zurück.

forward 100left 90right 90pushpop
Tipp

Bei der Tiefe 0 kehrt die Funktion zurück. Sonst zeichnet sie den Stamm, und an seinem Ende wachsen die beiden Äste.

Nächster Tipp

Ein Ast: push, 30 Grad drehen, tree(size * 0.7, depth - 1), pop. Nach dem pop steht die Schildkröte wieder oben am Stamm und schaut nach oben, bereit für den zweiten Ast.

Aufgabe 5Ein Baum ohne RückwegÜbung

Schreib tree(size, depth) für den Baum aus »Bäume und Kurven« noch einmal, diesmal ohne back und ohne zurückzudrehen: Vor jedem Ast merkt sich die Schildkröte mit push, wo sie ist, und kehrt nach ihm mit pop dorthin zurück.

forward(100)left(90)right(90)push()pop()
Tipp

Bei der Tiefe 0 kehrt die Funktion zurück. Sonst zeichnet sie den Stamm, und an seinem Ende wachsen die beiden Äste.

Nächster Tipp

Ein Ast: push(), 30 Grad drehen, tree(size * 0.7, depth - 1), pop(). Nach dem pop steht die Schildkröte wieder oben am Stamm und schaut nach oben, bereit für den zweiten Ast.

Aufgabe 5Ein Baum ohne RückwegÜbung

Schreib tree(size, depth) für den Baum aus »Bäume und Kurven« noch einmal, diesmal ohne back und ohne zurückzudrehen: Vor jedem Ast merkt sich die Schildkröte mit push, wo sie ist, und kehrt nach ihm mit pop dorthin zurück.

forward(100)left(90)right(90)push()pop()
Tipp

Bei der Tiefe 0 kehrt die Funktion zurück. Sonst zeichnet sie den Stamm, und an seinem Ende wachsen die beiden Äste.

Nächster Tipp

Ein Ast: push(), 30 Grad drehen, tree(size * 0.7, depth - 1), pop(). Nach dem pop steht die Schildkröte wieder oben am Stamm und schaut nach oben, bereit für den zweiten Ast.

3. Zufall

random(1, 6) ist eine zufällige ganze Zahl von 1 bis 6, wie ein Würfel. Mit Kommazahlen, random(0.5, 2.0), ist es eine zufällige Kommazahl dazwischen. Jeder Aufruf gibt eine neue Zahl, und jeder Lauf ein neues Bild.

Ein Bild aus dem Zufall sieht bei jedem Lauf anders aus, darum vergleicht hier niemand mit einer Vorlage: Jedes Bild ist richtig.

Aufgabe 6Ein SpaziergangEinstieg

Lass die Schildkröte 1000 kleine Schritte gehen, jeden 4 lang, und sich nach jedem zufällig ein wenig drehen, um random(-30, 30) Grad. Wer mag, lässt dabei die Farbe langsam durch den Farbkreis wandern.

forward 100left 90right 90color 200random(1, 6)
Tipp

Eine Schleife mit 1000 Durchläufen, darin ein Schritt vorwärts und eine Drehung um eine zufällige Zahl.

Nächster Tipp

Die Farbe des i-ten Schritts: color i / 3.0, so ist sie nach 1000 Schritten fast einmal herum.

Aufgabe 6Ein SpaziergangEinstieg

Lass die Schildkröte 1000 kleine Schritte gehen, jeden 4 lang, und sich nach jedem zufällig ein wenig drehen, um random(-30, 30) Grad. Wer mag, lässt dabei die Farbe langsam durch den Farbkreis wandern.

forward(100)left(90)right(90)color(200)random(1, 6)
Tipp

Eine Schleife mit 1000 Durchläufen, darin ein Schritt vorwärts und eine Drehung um eine zufällige Zahl.

Nächster Tipp

Die Farbe des i-ten Schritts: color(i / 3), so ist sie nach 1000 Schritten fast einmal herum.

Aufgabe 6Ein SpaziergangEinstieg

Lass die Schildkröte 1000 kleine Schritte gehen, jeden 4 lang, und sich nach jedem zufällig ein wenig drehen, um random(-30, 30) Grad. Wer mag, lässt dabei die Farbe langsam durch den Farbkreis wandern.

forward(100)left(90)right(90)color(200)random(1, 6)
Tipp

Eine Schleife mit 1000 Durchläufen, darin ein Schritt vorwärts und eine Drehung um eine zufällige Zahl.

Nächster Tipp

Die Farbe des i-ten Schritts: color(i / 3), so ist sie nach 1000 Schritten fast einmal herum.

Aufgabe 7Ein Baum im WindÜbung

Lass deinen Baum mit push und pop so wachsen, wie Bäume wachsen: Jeder Ast bekommt seinen eigenen zufälligen Winkel und seine eigene zufällige Länge. Lass ihn ein paarmal wachsen, jedes Mal steht ein anderer Baum da.

forward 100left 90right 90width 4pushpoprandom(1, 6)
Tipp

Statt left 30 ein Winkel aus dem Zufall: left random(10, 40), für jeden Ast neu.

Nächster Tipp

Auch die Länge darf schwanken: size * random(0.6, 0.85). Mit Kommazahlen gibt random eine Kommazahl zurück.

Nächster Tipp

Dick und braun unten, dünn und grün an den Spitzen: width depth und eine Farbe, die von depth abhängt, wie beim schönen Baum.

Aufgabe 7Ein Baum im WindÜbung

Lass deinen Baum mit push und pop so wachsen, wie Bäume wachsen: Jeder Ast bekommt seinen eigenen zufälligen Winkel und seine eigene zufällige Länge. Lass ihn ein paarmal wachsen, jedes Mal steht ein anderer Baum da.

forward(100)left(90)right(90)width(4)push()pop()random(1, 6)
Tipp

Statt left(30) ein Winkel aus dem Zufall: left(random(10, 40)), für jeden Ast neu.

Nächster Tipp

Auch die Länge darf schwanken: size * random(0.6, 0.85). Mit Kommazahlen gibt random eine Kommazahl zurück.

Nächster Tipp

Dick und braun unten, dünn und grün an den Spitzen: width depth und eine Farbe, die von depth abhängt, wie beim schönen Baum.

Aufgabe 7Ein Baum im WindÜbung

Lass deinen Baum mit push und pop so wachsen, wie Bäume wachsen: Jeder Ast bekommt seinen eigenen zufälligen Winkel und seine eigene zufällige Länge. Lass ihn ein paarmal wachsen, jedes Mal steht ein anderer Baum da.

forward(100)left(90)right(90)width(4)push()pop()random(1, 6)
Tipp

Statt left(30) ein Winkel aus dem Zufall: left(random(10, 40)), für jeden Ast neu.

Nächster Tipp

Auch die Länge darf schwanken: size * random(0.6, 0.85). Mit Kommazahlen gibt random eine Kommazahl zurück.

Nächster Tipp

Dick und braun unten, dünn und grün an den Spitzen: width depth und eine Farbe, die von depth abhängt, wie beim schönen Baum.

Ausprobieren: Lass an manchen Ästen einen dritten wachsen: Ist random(1, 3) gleich 1, kommt noch ein Ast geradeaus dazu. Achte darauf, wie viel dichter die Krone wird.
Aufgabe 8Eine WieseÜbung

Zeichne eine Wiese aus vielen Grashalmen nebeneinander. Ein Halm ist eine Reihe kurzer Schritte, die sich immer ein wenig in dieselbe Richtung biegen; jeder Halm biegt sich anders, ist anders lang und anders grün.

forward 100back 100left 90pen_uppen_downpushpopcolor "gold", "red", 0.5random(1, 6)
Tipp

Ein Halm: push, nach oben drehen, dann viele Schritte von 4, nach jedem eine kleine Drehung um denselben Winkel bend, und pop. Danach steht die Schildkröte wieder unten.

Nächster Tipp

Zwischen zwei Halmen geht sie mit gehobenem Stift ein paar Schritte nach rechts.

Nächster Tipp

Für jeden Halm neu: bend = random(-3.0, 3.0), eine Länge mit random(15, 40) und ein Grün mit color "forestgreen", "yellowgreen", random(0.0, 1.0).

Aufgabe 8Eine WieseÜbung

Zeichne eine Wiese aus vielen Grashalmen nebeneinander. Ein Halm ist eine Reihe kurzer Schritte, die sich immer ein wenig in dieselbe Richtung biegen; jeder Halm biegt sich anders, ist anders lang und anders grün.

forward(100)back(100)left(90)pen_up()pen_down()push()pop()color("gold", "red", 0.5)random(1, 6)
Tipp

Ein Halm: push(), nach oben drehen, dann viele Schritte von 4, nach jedem eine kleine Drehung um denselben Winkel bend, und pop(). Danach steht die Schildkröte wieder unten.

Nächster Tipp

Zwischen zwei Halmen geht sie mit gehobenem Stift ein paar Schritte nach rechts.

Nächster Tipp

Für jeden Halm neu: bend = random(-3.0, 3.0), eine Länge mit random(15, 40) und ein Grün mit color("forestgreen", "yellowgreen", random(0.0, 1.0)).

Aufgabe 8Eine WieseÜbung

Zeichne eine Wiese aus vielen Grashalmen nebeneinander. Ein Halm ist eine Reihe kurzer Schritte, die sich immer ein wenig in dieselbe Richtung biegen; jeder Halm biegt sich anders, ist anders lang und anders grün.

forward(100)back(100)left(90)penUp()penDown()push()pop()color("gold", "red", 0.5)random(1, 6)
Tipp

Ein Halm: push(), nach oben drehen, dann viele Schritte von 4, nach jedem eine kleine Drehung um denselben Winkel bend, und pop(). Danach steht die Schildkröte wieder unten.

Nächster Tipp

Zwischen zwei Halmen geht sie mit gehobenem Stift ein paar Schritte nach rechts.

Nächster Tipp

Für jeden Halm neu: bend = random(-3.0, 3.0), eine Länge mit random(15, 40) und ein Grün mit color("forestgreen", "yellowgreen", random(0.0, 1.0)).

4. Pflanzen aus Wörtern

Der Biologe Aristid Lindenmayer hat 1968 beschrieben, wie Algen wachsen: mit Wörtern, in denen jeder Buchstabe nach einer Regel durch ein ganzes Wort ersetzt wird, immer wieder. Solche Regeln heißen heute Lindenmayer-Systeme oder kurz L-Systeme. Liest die Schildkröte das Wort als Befehle, wächst eine Pflanze:

Buchstabe Die Schildkröte
F geht ein Stück vorwärts und zeichnet
+ dreht sich nach links
- dreht sich nach rechts
[ merkt sich die Stelle (push)
] kehrt zur Stelle zurück (pop)

Das Wort F[+F]F[-F]F ist ein Stiel aus drei Stücken mit einem Zweig nach links und einem nach rechts.

Aufgabe 9Ein Wort als BildÜbung

Schreib draw_word(word, size, angle), die ein Wort Buchstabe für Buchstabe zeichnet: F ist size Schritte vorwärts, + ist angle Grad nach links, - ist angle Grad nach rechts, [ ist push und ] ist pop. Andere Buchstaben zeichnen nichts.

forward 100left 90right 90pushpop
Tipp

Eine Schleife über die Buchstaben: word.each_char do |letter|. Darin fragt sie, welcher Buchstabe es ist.

Nächster Tipp

Für jeden der fünf Buchstaben eine Frage: if letter == "F", dann elsif letter == "+" und so weiter, mit dem passenden Befehl darin.

Aufgabe 9Ein Wort als BildÜbung

Schreib draw_word(word, size, angle), die ein Wort Buchstabe für Buchstabe zeichnet: F ist size Schritte vorwärts, + ist angle Grad nach links, - ist angle Grad nach rechts, [ ist push und ] ist pop. Andere Buchstaben zeichnen nichts.

forward(100)left(90)right(90)push()pop()
Tipp

Eine Schleife über die Buchstaben: for letter in word:. Darin fragt sie, welcher Buchstabe es ist.

Nächster Tipp

Für jeden der fünf Buchstaben eine Frage: if letter == "F":, dann elif letter == "+": und so weiter, mit dem passenden Befehl darin.

Aufgabe 9Ein Wort als BildÜbung

Schreib drawWord(word, size, angle), die ein Wort Buchstabe für Buchstabe zeichnet: F ist size Schritte vorwärts, + ist angle Grad nach links, - ist angle Grad nach rechts, [ ist push und ] ist pop. Andere Buchstaben zeichnen nichts.

forward(100)left(90)right(90)push()pop()
Tipp

Eine Schleife über die Buchstaben: for (const letter of word). Darin fragt sie, welcher Buchstabe es ist.

Nächster Tipp

Für jeden der fünf Buchstaben eine Frage: if (letter === "F"), dann else if (letter === "+") und so weiter, mit dem passenden Befehl darin.

Jetzt wächst das Wort. Die Regel heißt: Jedes F wird zu F[+F]F[-F]F. Aus F wird so F[+F]F[-F]F, und daraus ein Wort, in dem jedes dieser fünf F wieder ein ganzer Zweig ist. Klick dich durch die Stufen: Jedes F der Regel wird zur Pflanze der Stufe davor, jede in ihrer Farbe.

Aufgabe 10Ein Wort wächstKnobelei

Schreib grow(word, times), die das Wort times-mal wachsen lässt: Bei jedem Mal wird jedes F zu F[+F]F[-F]F. Deine Funktion draw_word von eben steht schon da; unten zeichnet sie die Pflanze der Stufe 4.

forward 100left 90right 90pushpop
Tipp

Eine Schleife, die times-mal läuft; in jedem Durchlauf wird das Wort durch ein neues ersetzt.

Nächster Tipp

Jedes F auf einmal ersetzen: word = word.gsub("F", "F[+F]F[-F]F"). Am Ende gibt die Funktion das Wort zurück.

Aufgabe 10Ein Wort wächstKnobelei

Schreib grow(word, times), die das Wort times-mal wachsen lässt: Bei jedem Mal wird jedes F zu F[+F]F[-F]F. Deine Funktion draw_word von eben steht schon da; unten zeichnet sie die Pflanze der Stufe 4.

forward(100)left(90)right(90)push()pop()
Tipp

Eine Schleife, die times-mal läuft; in jedem Durchlauf wird das Wort durch ein neues ersetzt.

Nächster Tipp

Jedes F auf einmal ersetzen: word = word.replace("F", "F[+F]F[-F]F"). Am Ende gibt die Funktion das Wort zurück.

Aufgabe 10Ein Wort wächstKnobelei

Schreib grow(word, times), die das Wort times-mal wachsen lässt: Bei jedem Mal wird jedes F zu F[+F]F[-F]F. Deine Funktion drawWord von eben steht schon da; unten zeichnet sie die Pflanze der Stufe 4.

forward(100)left(90)right(90)push()pop()
Tipp

Eine Schleife, die times-mal läuft; in jedem Durchlauf wird das Wort durch ein neues ersetzt.

Nächster Tipp

Jedes F auf einmal ersetzen: word = word.replaceAll("F", "F[+F]F[-F]F"). Am Ende gibt die Funktion das Wort zurück.

Ausprobieren: Andere Regeln, andere Pflanzen. Probier F[+F]F[-F][F] mit 20 Grad und fünf Stufen, oder FF-[-F+F+F]+[+F-F-F] mit 22,5 Grad und vier Stufen. Mit zwei Regeln wächst eine Pflanze aus dem Buch unten: X wird zu F+[[X]-X]-F[-FX]+X und F zu FF, mit 22,5 Grad, fünf Stufen und X als erstem Wort. X zeichnet nichts, es sagt nur, wo die Pflanze weiterwächst. Achte darauf, welche Regel einen Busch und welche einen Halm wachsen lässt.

The Algorithmic Beauty of Plants, Przemysław Prusinkiewicz und Aristid Lindenmayer, 1990. Das Buch zu den Pflanzen aus Wörtern, mit Regeln für Büsche, Bäume, Blüten und Farne und mit vielen Bildern. Eine elektronische Fassung steht frei auf algorithmicbotany.org.

Aufgabe 11Deine PflanzeKnobelei

Erfinde eine eigene Pflanze: eine andere Regel, ein anderer Winkel, mehr Stufen, Farben, die sich mit jedem Ast ändern, oder ein Winkel aus dem Zufall. Ideen stehen oben im Kasten »Ausprobieren«.

forward 100back 100left 90right 90pen_uppen_downwidth 4pushpopcolor 200color "gold", "red", 0.5random(1, 6)
Tipp

Fang mit einer Zahl an: Ein Winkel von 20 oder 35 Grad statt 25 gibt schon eine andere Pflanze.

Nächster Tipp

Eine zweite Regel braucht einen Buchstaben, der nichts zeichnet, wie X: Er sagt nur, wo die Pflanze weiterwächst. Dann ersetzt grow Buchstabe für Buchstabe, damit die Regeln einander nicht stören.

Aufgabe 11Deine PflanzeKnobelei

Erfinde eine eigene Pflanze: eine andere Regel, ein anderer Winkel, mehr Stufen, Farben, die sich mit jedem Ast ändern, oder ein Winkel aus dem Zufall. Ideen stehen oben im Kasten »Ausprobieren«.

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)push()pop()color(200)color("gold", "red", 0.5)random(1, 6)
Tipp

Fang mit einer Zahl an: Ein Winkel von 20 oder 35 Grad statt 25 gibt schon eine andere Pflanze.

Nächster Tipp

Eine zweite Regel braucht einen Buchstaben, der nichts zeichnet, wie X: Er sagt nur, wo die Pflanze weiterwächst. Dann ersetzt grow Buchstabe für Buchstabe, damit die Regeln einander nicht stören.

Aufgabe 11Deine PflanzeKnobelei

Erfinde eine eigene Pflanze: eine andere Regel, ein anderer Winkel, mehr Stufen, Farben, die sich mit jedem Ast ändern, oder ein Winkel aus dem Zufall. Ideen stehen oben im Kasten »Ausprobieren«.

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)push()pop()color(200)color("gold", "red", 0.5)random(1, 6)
Tipp

Fang mit einer Zahl an: Ein Winkel von 20 oder 35 Grad statt 25 gibt schon eine andere Pflanze.

Nächster Tipp

Eine zweite Regel braucht einen Buchstaben, der nichts zeichnet, wie X: Er sagt nur, wo die Pflanze weiterwächst. Dann ersetzt grow Buchstabe für Buchstabe, damit die Regeln einander nicht stören.

5. Dein Bild

Zum Schluss alles zusammen: Farben aus Zahlen, push und pop, Zufall und Pflanzen aus Wörtern. Geprüft wird hier nichts.

Aufgabe 12Dein BildÜbung

Zeichne, was du willst, mit allem, was du jetzt kannst: einen Wald aus Bäumen im Wind, eine Wiese mit Blumen, eine Schneeflocke, einen Blitz, einen Sternenhimmel. Gefällt dir dein Bild, kannst du es einreichen.

forward 100back 100left 90right 90pen_uppen_downwidth 4pushpopcolor 200color "gold", "red", 0.5random(1, 6)
Tipp

Fang mit einer Sache an, die du schon kannst, und setz sie mehrmals nebeneinander: Mit push und pop kommt die Schildkröte nach jedem Teil zurück.

Nächster Tipp

Mit gehobenem Stift bringst du die Schildkröte an die Stelle für das nächste Teil.

Aufgabe 12Dein BildÜbung

Zeichne, was du willst, mit allem, was du jetzt kannst: einen Wald aus Bäumen im Wind, eine Wiese mit Blumen, eine Schneeflocke, einen Blitz, einen Sternenhimmel. Gefällt dir dein Bild, kannst du es einreichen.

forward(100)back(100)left(90)right(90)pen_up()pen_down()width(4)push()pop()color(200)color("gold", "red", 0.5)random(1, 6)
Tipp

Fang mit einer Sache an, die du schon kannst, und setz sie mehrmals nebeneinander: Mit push und pop kommt die Schildkröte nach jedem Teil zurück.

Nächster Tipp

Mit gehobenem Stift bringst du die Schildkröte an die Stelle für das nächste Teil.

Aufgabe 12Dein BildÜbung

Zeichne, was du willst, mit allem, was du jetzt kannst: einen Wald aus Bäumen im Wind, eine Wiese mit Blumen, eine Schneeflocke, einen Blitz, einen Sternenhimmel. Gefällt dir dein Bild, kannst du es einreichen.

forward(100)back(100)left(90)right(90)penUp()penDown()width(4)push()pop()color(200)color("gold", "red", 0.5)random(1, 6)
Tipp

Fang mit einer Sache an, die du schon kannst, und setz sie mehrmals nebeneinander: Mit push und pop kommt die Schildkröte nach jedem Teil zurück.

Nächster Tipp

Mit gehobenem Stift bringst du die Schildkröte an die Stelle für das nächste Teil.