Ich habe ein Programm, das die ontimer
Funktion verwendet, um die Farben in einem Turtle Grafik-Ampel von grün, gelb, rot und wieder zurück zu ändern. Hier ist das vollständige Programm dafür:Wie benutze ich hide/showturtle um einen Stoplight-Rechner in Python zu erstellen?
import turtle
turtle.setup(400,500)
wn = turtle.Screen()
wn.title("Tess becomes a traffic light!")
wn.bgcolor("lightgreen")
tess = turtle.Turtle()
def draw_housing():
""" Draw a nice housing to hold the traffic lights """
tess.pensize(3)
tess.color("black", "darkgrey")
tess.begin_fill()
tess.forward(80)
tess.left(90)
tess.forward(200)
tess.circle(40, 180)
tess.forward(200)
tess.left(90)
tess.end_fill()
draw_housing()
tess.penup()
tess.forward(40)
tess.left(90)
tess.forward(50)
tess.shape("circle")
tess.shapesize(3)
tess.fillcolor("green")
state_num = 0
def advance_state_machine():
global state_num
wn.ontimer(advance_state_machine, 2000)
if state_num == 0:
tess.forward(70)
tess.fillcolor("orange")
state_num = 1
elif state_num == 1:
tess.forward(70)
tess.fillcolor("red")
state_num = 2
else:
tess.back(140)
tess.fillcolor("green")
state_num = 0
advance_state_machine()
wn.mainloop()
Nun aber ich im Wesentlichen das Gleiche tun will, aber durch hideturtle
und showturtle
verwenden. Ich habe die Funktion advance_state_machine
insgesamt losgeworden. An seiner Stelle ist das, beginnend direkt nach draw_housing()
:
tess.penup()
tess.hideturtle()
green = turtle.Turtle()
green.pu()
green.forward(40)
green.left(90)
green.forward(50)
green.shape("circle")
green.shapesize(3)
green.fillcolor("green")
yellow = turtle.Turtle()
yellow.pu()
yellow.forward(40)
yellow.left(90)
yellow.forward(50)
yellow.shape("circle")
yellow.shapesize(3)
yellow.forward(70)
yellow.fillcolor("orange")
red = turtle.Turtle()
red.pu()
red.forward(40)
red.left(90)
red.forward(190)
red.shape("circle")
red.shapesize(3)
red.fillcolor("red")
esentially, ich versuche, einen Weg zu Schleife Versteck zu schaffen und zeigt jede Schildkröte individuell mein erstes Programm zu imitieren. Ich könnte Code schreiben, um jede Schildkröte bei einem Timer bis unendlich zu verstecken und zu zeigen, aber ich würde es lieber alleine fortsetzen! Gibt es auch einen einfachen Weg, es so zu machen, dass, wenn ein Licht "an" ist, die anderen zwei "aus" sind, dargestellt als eine Dimmer-/ausgegraute Farbe, anstatt dass die Schildkröte vollständig verschwindet? Vielen Dank im Voraus für Hilfe/Beratung.