Wie macht man einen selbstständigen Baum ?

1 Antwort

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://jsfiddle.net/wnj34Lhz/2/

Woher ich das weiß:Studium / Ausbildung – Bachelor in Informatik 👨🏻‍🎓
Anastasia354 
Fragesteller
 08.06.2021, 00:01

Das war's?😳😅

0
MrAmazing2  08.06.2021, 00:02
@Anastasia354

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

1
MrAmazing2  08.06.2021, 15:33
@Anastasia354

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

0
MrAmazing2  08.06.2021, 21:37
@Anastasia354

Womit müsst ihr das denn zeichnen?

Ihr werdet ja wohl irgend eine Bibliothek zum Malen hernehmen

0
MrAmazing2  08.06.2021, 21:47
@Anastasia354

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?

0
MrAmazing2  08.06.2021, 23:10
@Anastasia354

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()
0
MrAmazing2  08.06.2021, 23:19
@Anastasia354

Habt ihr Rekursion noch nicht gelernt?

Hast nicht du Rekursion in die Fragethemen geschrieben? xD

0
Anastasia354 
Fragesteller
 09.06.2021, 07:50
@MrAmazing2

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 😅

0
MrAmazing2  09.06.2021, 13:42
@Anastasia354

Rekursion ist einfach eine Funktion, die sich selbst aufruft.

Am besten schaust du dir mal ein paar Erklärungen dazu an

0