У меня есть программа, которая использует функцию ontimer
, чтобы изменить цвета в стоп-сигнале черепахи черепа от зеленого, желтого, красного и обратно. Вот полная программа, которая:Как использовать hide/showturtle для создания стоп-кадра в Python?
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()
Теперь, однако, я хочу сделать по существу то же самое, но с использованием hideturtle
и showturtle
. Я полностью избавился от функции advance_state_machine
. На его месте это, начиная сразу после 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, я пытаюсь создать путь к петлевой скрываться и показывая каждую черепаху по отдельности, чтобы имитировать мою первую программу. Я мог бы написать код, чтобы скрыть и показать каждой черепахе по таймеру до бесконечности, но я предпочел бы, чтобы он продолжался сам по себе! Кроме того, есть ли какой-либо простой способ сделать это так, что, когда один свет «включен», другие два «выключены», представлены как цвет диммера/серого цвета, а не полностью исчезает черепаха? Заранее благодарим за помощь/совет.