在学习turtle时,接触到使用turtle.clone()画递归树的程序。一开始对clone函数不大理解,查阅资料时也只有对clone函数的简单介绍:
turtle.clone()创建并返回一个turtle的一个克隆,具有相同属性
以下为递归树的代码:
import turtle
def tree(plist,len):
if(len>=5):
flist=[]
for x in plist:
p=x.clone()
x.left(60)
x.fd(len)
p.right(60)
p.fd(len)
q=x.clone()
flist.append(p)
flist.append(q)
tree(flist,len*0.6235)
def main():
tree_len=150
turtle.speed(2)
turtle.pensize(2)
turtle.color("green")
turtle.hideturtle() # 隐藏箭头
turtle.seth(90)
turtle.penup()
turtle.goto(0,0)
turtle.pendown()
turtle.fd(tree_len)
llist=turtle.clone()
tree([llist],tree_len/2)
#turtle.tracer(False)#关闭显示图像
turtle.setup(1800,1000,0,0)
main()
turtle.tracer(True)#开启显示图像
turtle.mainloop()
turtle.done
运行结果:
llist=turtle.clone()
相当于在当前海龟的位置处克隆出另一只位置方向等属性相同的海龟,并且取名叫llist,之后使用llist.任意turtle函数()可操作这只海龟,llist海龟与之前的海龟完全独立,相当于两只海龟经过克隆后思维就完全独立了,改变turtle海龟或者llist海龟的属性对另一者没有影响。