1 回答
TA贡献1828条经验 获得超3个赞
首先,让我们讨论一下您的绘图代码。你的树由 500 只不同的海龟绘制的大约 500 条线组成!这似乎太过分了,所以让我们重写您的代码以使用单个海龟撤消它的动作而不是克隆自身:
from turtle import Screen, Turtle
from random import uniform
def about(x):
return x * uniform(0.95, 1.05)
# recursively draw a tree
def tree(t, a, s):
if s < 2:
return
t.forward(s)
t.left(a)
tree(t, about(30), s * about(0.7))
t.right(2 * a)
tree(t, about(-30), s * about(0.7))
t.left(a)
t.backward(s)
screen = Screen()
screen.tracer(0)
turtle = Turtle()
turtle.hideturtle()
turtle.setheading(90)
tree(turtle, 15, 50)
screen.tracer(1)
screen.mainloop()
就tracer()我而言,我无法重现您的结果,但图像也从未完成。参数tracer()指定您只想在每个nth图形操作上更新图像。这是非常专业的,我只推荐 0 和 1 的值。首先,很难根据算法计算每第 n 次更新应该是什么,以及什么对用户来说在视觉上是有意义的。其次,在标准的 Python turtle 中,有一些操作会导致更新,无论tracer()设置如何都会引发此计算,除非您知道这些额外更新何时发生。
在您的情况下,出于速度目的,tracer(0)请在激烈的绘图开始时设置,并tracer(1)在您完成绘图时设置。然后一切都应该正常工作。
添加回答
举报
