如何非常快速地撤消乌龟?
How to undo in turtle very fast?
我正在制作一个可以创建呼吸描记器的程序。这是我的代码:
from turtle import *
from random import randint
speed(10000)
for i in range(20):
col = randint(1, 5)
if col == 1:
pencolor("orange")
elif col == 2:
pencolor("blue")
elif col == 3:
pencolor("green")
elif col == 4:
pencolor("purple")
elif col == 5:
pencolor("dark blue")
circle(50)
left(20)
while undobufferentries():
undo()
但是,程序的最后一部分是有问题的。我希望那个部分,撤消,非常快,就像创建 spiro 一样快。如何快速撤销??
三次你说你想要它"very fast",但你还说,"as fast as the spiro was created"。我们可以很容易地让它比 spiro 的创建速度更快,但只需要稍微多一些工作就可以做到 "as fast".
这个问题指出了undo()
机制的弱点。要仅撤消您的一个圈子,涉及 80 多个步骤的序列。但是,即使这样也不能完全清楚为什么它 这么 慢。如果我们关闭屏幕更新,我们可以使其即时。但如果这是可以接受的,那么您不妨将 undo()
替换为 clear()
.
我很少鼓励人们搞乱 tracer()
,即使我这样做,我通常也会写一些简单的 tracer(False)
和 tracer(True)
的例子来避免数字参数。但这是一种罕见的情况,我们需要 tracer()
的特定数字参数来控制 undo()
图形的速度:
from turtle import *
from random import choice
COLORS = ["orange", "blue", "green", "purple", "dark blue"]
hideturtle()
speed('fastest')
for _ in range(20):
pencolor(choice(COLORS))
circle(50)
left(20)
tracer(20) # value unrelated to either 20 above
while undobufferentries() > 1:
undo() # undo everything but hideturtle()
tracer(1)
exitonclick()
在我的系统上,绘图的撤消现在与执行的速度相同,但您可能需要微调tracer()
的参数以实现您想要的效果。
我正在制作一个可以创建呼吸描记器的程序。这是我的代码:
from turtle import *
from random import randint
speed(10000)
for i in range(20):
col = randint(1, 5)
if col == 1:
pencolor("orange")
elif col == 2:
pencolor("blue")
elif col == 3:
pencolor("green")
elif col == 4:
pencolor("purple")
elif col == 5:
pencolor("dark blue")
circle(50)
left(20)
while undobufferentries():
undo()
但是,程序的最后一部分是有问题的。我希望那个部分,撤消,非常快,就像创建 spiro 一样快。如何快速撤销??
三次你说你想要它"very fast",但你还说,"as fast as the spiro was created"。我们可以很容易地让它比 spiro 的创建速度更快,但只需要稍微多一些工作就可以做到 "as fast".
这个问题指出了undo()
机制的弱点。要仅撤消您的一个圈子,涉及 80 多个步骤的序列。但是,即使这样也不能完全清楚为什么它 这么 慢。如果我们关闭屏幕更新,我们可以使其即时。但如果这是可以接受的,那么您不妨将 undo()
替换为 clear()
.
我很少鼓励人们搞乱 tracer()
,即使我这样做,我通常也会写一些简单的 tracer(False)
和 tracer(True)
的例子来避免数字参数。但这是一种罕见的情况,我们需要 tracer()
的特定数字参数来控制 undo()
图形的速度:
from turtle import *
from random import choice
COLORS = ["orange", "blue", "green", "purple", "dark blue"]
hideturtle()
speed('fastest')
for _ in range(20):
pencolor(choice(COLORS))
circle(50)
left(20)
tracer(20) # value unrelated to either 20 above
while undobufferentries() > 1:
undo() # undo everything but hideturtle()
tracer(1)
exitonclick()
在我的系统上,绘图的撤消现在与执行的速度相同,但您可能需要微调tracer()
的参数以实现您想要的效果。