Turtlegrafik Frage zu Datenstruktur
Verfasst: Montag 11. Januar 2021, 12:12
Für Buchstaben und Zeichenkombinationen in einem quadratischen Raster habe ich Turtlebefehle als Listen definiert, die von der Funktion "zeichne" wieder zu Turtlebefehlen umgesetzt werden. Das klappt.
Jetzt soll der ganze Text in der Liste "Text" festgelegt und von einer Funktion "zeichnetext" gezeichnet werden. Meine Frage, wie kann ich aus Text=["Le","o","t"] wieder die definierten Listen bekommen. Mit eval() ging's nicht . Gestern hat mir _blackjack_ geraten, das Problem hier nochmal zu posten, statt nur meine Vorstellung von einer möglichen Lösung preiszugeben.
)
from tkinter import *
from turtle import *
import turtle
breite=520
hoehe=520
screensize(breite,hoehe)
def zeichne(z):
# zeichnet das Zeichen (ein Buchstabe oder ein Diph- oder Triphtong),
# aus einer Liste mit Turtle-Bewegungen und den 4 Sonderbefehlen:
# begin_fill() 'b', end_fill() 'e',penup() 'u', pendown() 'd'
if z==[]:
return 0
elif z[0] in ['b','e','u','d']:
if z[0]=='b':
begin_fill()
if z[0]=='e':
end_fill()
if z[0]=='u':
pu()
if z[0]=='d':
pendown()
return zeichne(z[1:])
fd(x*int(z[0]));lt(int(z[1])*90)
return zeichne(z[2:])
def zeichnetext(liste):♯ funzt nicht
if liste==[]:
return
zeichen=liste[0]
if zeichen=="":
pu();fd(2*x);pd()
return zeichnetext(liste[1:])
zeichne(zeichen)
pu();fd(x);pd()
return zeichnetext(liste[1:])
def start():
speed(0);ht()
global ss,anz,x
ss=breite
anz=26
x=ss/anz #20
# Definition der Zeichen
Le=['b',5,1,1,1,4,-1,6,1,1,1,7,1,'e','u',2,1,2,-1,'d','b',
3,1,1,1,2,-1,1,-1,2,1,3,1,3,1,5,1,'u',1,1,3,0,'d',1,-1,1,-1,1,-1,1,-1,
'u',-3,-1,-1,0,'e','u',0,1,-2,-1,-2,0,'d','u',5,0,'d']
t=['b',2,1,1,1,1,-1,3,-1,1,1,1,1,1,-1,2,1,1,1,7,1,'e','u',2,0,'d']
O=['b',3,1,7,1,3,1,7,1,'u',1,1,1,0,'d',5,-1,1,-1,5,-1,1,-1,
'u',-1,-1,-1,0,'d','e','u',3,0,'d']
zeichne(Le); pu();fd(2*x);pd()
zeichne(O); pu();fd(x);pd()
zeichne(t)
'''alternativ sollte einmal
zeichnetext(["Le","","O","t"])
möglich sein'''
start()
Jetzt soll der ganze Text in der Liste "Text" festgelegt und von einer Funktion "zeichnetext" gezeichnet werden. Meine Frage, wie kann ich aus Text=["Le","o","t"] wieder die definierten Listen bekommen. Mit eval() ging's nicht . Gestern hat mir _blackjack_ geraten, das Problem hier nochmal zu posten, statt nur meine Vorstellung von einer möglichen Lösung preiszugeben.

from tkinter import *
from turtle import *
import turtle
breite=520
hoehe=520
screensize(breite,hoehe)
def zeichne(z):
# zeichnet das Zeichen (ein Buchstabe oder ein Diph- oder Triphtong),
# aus einer Liste mit Turtle-Bewegungen und den 4 Sonderbefehlen:
# begin_fill() 'b', end_fill() 'e',penup() 'u', pendown() 'd'
if z==[]:
return 0
elif z[0] in ['b','e','u','d']:
if z[0]=='b':
begin_fill()
if z[0]=='e':
end_fill()
if z[0]=='u':
pu()
if z[0]=='d':
pendown()
return zeichne(z[1:])
fd(x*int(z[0]));lt(int(z[1])*90)
return zeichne(z[2:])
def zeichnetext(liste):♯ funzt nicht
if liste==[]:
return
zeichen=liste[0]
if zeichen=="":
pu();fd(2*x);pd()
return zeichnetext(liste[1:])
zeichne(zeichen)
pu();fd(x);pd()
return zeichnetext(liste[1:])
def start():
speed(0);ht()
global ss,anz,x
ss=breite
anz=26
x=ss/anz #20
# Definition der Zeichen
Le=['b',5,1,1,1,4,-1,6,1,1,1,7,1,'e','u',2,1,2,-1,'d','b',
3,1,1,1,2,-1,1,-1,2,1,3,1,3,1,5,1,'u',1,1,3,0,'d',1,-1,1,-1,1,-1,1,-1,
'u',-3,-1,-1,0,'e','u',0,1,-2,-1,-2,0,'d','u',5,0,'d']
t=['b',2,1,1,1,1,-1,3,-1,1,1,1,1,1,-1,2,1,1,1,7,1,'e','u',2,0,'d']
O=['b',3,1,7,1,3,1,7,1,'u',1,1,1,0,'d',5,-1,1,-1,5,-1,1,-1,
'u',-1,-1,-1,0,'d','e','u',3,0,'d']
zeichne(Le); pu();fd(2*x);pd()
zeichne(O); pu();fd(x);pd()
zeichne(t)
'''alternativ sollte einmal
zeichnetext(["Le","","O","t"])
möglich sein'''
start()