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):
global x, y, alpha
vx = distanz*cos(alpha*pi/180)
vy = distanz*sin(alpha*pi/180)
if stiftunten:
fenster.strecke(x, y, x+vx, y+vy, farbe, dicke)
x += vx
y += vy
def rueckwaerts(distanz):
vorwaerts(-distanz)
def links(winkel):
global alpha
alpha -= winkel
def rechts(winkel):
links(-winkel)
def stifthoch():
global stiftunten
stiftunten = False
def stiftrunter():
global stiftunten
stiftunten = True
def setze_farbe(f):
global farbe
farbe = f
def setze_dicke(d):
global dicke
dicke = d
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 separaten Variablen speichern #
############################################################
kroete = {}
x = 2500
y = 5000
alpha = -90
farbe = (255, 0, 0)
dicke = 1
stiftunten = True
setze_dicke(10)
baum(9, 2000)
fenster.speichere_als_svg("output.svg")