Wie macht man einen selbstständigen Baum ?
1 Antwort
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
def baum(rotation, startpunkt, tiefe):
if tiefe == 0:
return
# -- Ast malen --
# Von Startpunkt zu Endpunkt.
# Die Länge kann man aus Tiefe ableiten (die halbiert sich ja immer), die Richtung aus der Rotation.
# Und daraus kann man die Position des End-Punkts berechnen. Und dann eine Linie dahin ziehen.
baum(rotation-45, endpunkt, tiefe-1)
baum(rotation+45, endpunkt, tiefe-1)
baum(270,(screenWidth/2, screenHeight),7)
Hier hast du die Lösung in JavaScript. Falls du es noch nicht geschafft hast kannst du ja einfach diese Lösung zu Python umschreiben, ist nicht schwer:
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Jo
Einfach eine Funktion die sich (zweimal) selbst aufruft, und dabei einen Zähler (Tiefe) übergibt und um 1 erniedrigt).
Und eine Abfrage ob die Tiefe 0 ist (die wird ja bei jedem weiteren Selbst-Aufruf um 1 erniedrigt, und das soll ja nicht unendlich lange so gehen), da dann returnen.
Mehr ist Rekursion nicht.
Das Zeichnen musst du selbst hinriegen :D
![](https://images.gutefrage.net/media/user/Anastasia354/1612777266616_nmmslarge__226_703_644_644_8a1c7f65e795c76a6116e3f3eadbe442.jpg?v=1612777267000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Naja, fast.
Das einfachste hat halt noch gefehlt.
- Zeichnen (ka wie du das machst, hast keine Library erwähnt),
- Berechnen des End-Punkts der Linie (aber das steht ja in meiner JavaScript Lösung: cos(Winkel)*Länge = X-Distanz vom Startpunkt. sin(Winkel)*Länge = Y-Distanz vom Startpunkt).
Ich mach doch nich deine Hausaufgaben damit du sie abschreiben kannst, ich will dass du es lernst und verstehst. :D
![](https://images.gutefrage.net/media/user/Anastasia354/1612777266616_nmmslarge__226_703_644_644_8a1c7f65e795c76a6116e3f3eadbe442.jpg?v=1612777267000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Womit müsst ihr das denn zeichnen?
Ihr werdet ja wohl irgend eine Bibliothek zum Malen hernehmen
![](https://images.gutefrage.net/media/user/Anastasia354/1612777266616_nmmslarge__226_703_644_644_8a1c7f65e795c76a6116e3f3eadbe442.jpg?v=1612777267000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Python ist nur die ProgrammierSprache, zum Zeichnen benutzt man eine Bibliothek. (also eine Sammlung an Vorgefertigen Code (der in dem Fall eine Art Zeichenprogramm enthält))
Vermutlich
- Steht‘s in der Aufgabenstellung
- Habt ihr das schonmal gemacht
Eine Bibliothek erkennst du daran, dass sie im Programs importiert werden muss:
“import <der Name der Bibliothek>“ steht da meist am Anfang des Programms
Benutzt ihr vielleicht turtle?
![](https://images.gutefrage.net/media/user/Anastasia354/1612777266616_nmmslarge__226_703_644_644_8a1c7f65e795c76a6116e3f3eadbe442.jpg?v=1612777267000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Hier ist die Dokumentation zur Turtle-Bibliothek: https://docs.python.org/3/library/turtle.html
Da findest du alle Funtionen - z.B. auch, wie du eine Linie zeichnest.
Habe das noch nie benutzt und checke es auf den ersten Blick. Sollte nicht so schwer sein. Ist ja auch für Kinder :D
Ich denke bevor du die Rekursive Funktion aufrufst musst du den Turtle noch unten in die mitte setzen. Das sollte so gehen:
turtle.penup()
turtle.goto(turtle.window_width()/2, 3) # Bewegen zu: X: Mitte des Bildschirms. Y: Ganz unten
turtle.pendown()
![](https://images.gutefrage.net/media/user/Anastasia354/1612777266616_nmmslarge__226_703_644_644_8a1c7f65e795c76a6116e3f3eadbe442.jpg?v=1612777267000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Habt ihr Rekursion noch nicht gelernt?
Hast nicht du Rekursion in die Fragethemen geschrieben? xD
![](https://images.gutefrage.net/media/user/Anastasia354/1612777266616_nmmslarge__226_703_644_644_8a1c7f65e795c76a6116e3f3eadbe442.jpg?v=1612777267000)
Ne hatten noch keine rekursion. Ja das hab ich geschrieben, weil das da vorgegeben war. Sonst wüsste ich auch nicht, dass sowas überhaupt existiert 😅
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Rekursion ist einfach eine Funktion, die sich selbst aufruft.
Am besten schaust du dir mal ein paar Erklärungen dazu an
Das war's?😳😅