from math import sin, cos, pi
from random import randrange
def svg_linie_als_string(x1, y1, x2, y2, farbe, dicke):
return f''
class zeichenfenster():
def __init__(self, breite, hoehe):
self.breite = breite
self.hoehe = hoehe
self.liste_strecken = []
def strecke(self, x1, y1, x2, y2, farbe, dicke=1):
self.liste_strecken.append((x1, y1, x2, y2, farbe, dicke))
def speichere_als_svg(self, name):
with open(name, 'w') as datei:
datei.write(f'\n')
##############################################
# Diverse Funktionen zur Steuerung der Kröte #
##############################################
def vorwaerts(distanz):
vx = distanz*cos(kroete["alpha"]*pi/180)
vy = distanz*sin(kroete["alpha"]*pi/180)
if kroete["stiftunten"]:
fenster.strecke(kroete["x"], kroete["y"], kroete["x"]+vx, kroete["y"]+vy, kroete["farbe"], kroete["dicke"])
kroete["x"] += vx
kroete["y"] += vy
def rueckwaerts(distanz):
vorwaerts(-distanz)
def links(winkel):
kroete["alpha"] -= winkel
def rechts(winkel):
links(-winkel)
def stifthoch():
kroete["stiftunten"] = False
def stiftrunter():
kroete["stiftunten"] = True
def setze_farbe(farbe):
kroete["farbe"] = farbe
def setze_dicke(dicke):
kroete["dicke"] = dicke
def baum(tiefe, laenge):
setze_farbe((randrange(256), randrange(256), randrange(256)))
vorwaerts(laenge)
if tiefe > 0:
links(30)
baum(tiefe-1, laenge/2)
rechts(60)
baum(tiefe-1, laenge/2)
links(30)
stifthoch()
rueckwaerts(laenge)
stiftrunter()
#############################
# Beginn des Hauptprogramms #
#############################
fenster = zeichenfenster(5000, 5000)
#########################################################
# Zustandsdaten der Kröte in einem Dictionary speichern #
#########################################################
# 1. Möglichkeit:
kroete = {
"x" : 2500,
"y" : 5000,
"alpha" : -90,
"farbe" : (255, 0, 0),
"dicke" : 1,
"stiftunten" : True,
}
# 2. Möglichkeit:
# kroete = {}
# kroete["x"] = 2500
# kroete["y"] = 5000
# kroete["alpha"] = -90
# kroete["farbe"] = (255, 0, 0)
# kroete["dicke"] = 1
# kroete["stiftunten"] = True
setze_dicke(10)
baum(9, 2000)
fenster.speichere_als_svg("output.svg")