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)在您完成繪圖時設置。然后一切都應該正常工作。
添加回答
舉報