Turtle(5)

Turtle(5)

前言

经过前面几节课的学习,我们已经学会了绝大部分的turtle库的内容.
也已经可以用turtle库画一些比较经典与创意的图形了.
本节课,我们将clone()

clone()

clone()函数将会在当位位置,复制一个与当前画笔属性完全一致,但是后续相互独立的画笔.从而可以展开多方位同时作图,或者多个图形的同时出现在画面上的操作

   import turtle
   t = turtle.Turtle()
   t.setheading(90)
   t.forward(100)
   t2 = t.clone()  # 在当前位置克隆一支画笔
   t.left(45)
   t2.right(45)
   t.forward(100)
   t2.forward(100)
   t.done()

效果图:
示例1效果图

由图中的两个箭头可知,这是两个画笔.
注意:
一旦克隆成功,两支画笔将相对独立.

看一下改良版的二叉树画法:

def ecs3(n,t):
    t1 = t.clone()
    t2 = t.clone()
    t1.left(45)
    t1.pensize(n*2)
    t1.color("red")
    t2.right(45)
    t2.color("blue")
    t2.pensize(n*2)
    t1.forward(20*n)
    t2.forward(20*n)
    if n != 1:
        ecs3(n-1, t1)
        ecs3(n-1, t2)
    return
  
t = turtle.Turtle()
t.setheading(90)
t.pensize(10)
t.forward(100)
ecs3(5,t)
turtle.done()

看一下效果图:
改进的二叉树效果图

有了两个画笔,可以更加简单的用递归的效果来实现二叉树.

多个画笔,还有一个很重要的作用,就是当我们改变画笔的形状的时候用来让画布上同时出现多个图形

# 多画笔多图效果
def demo3():
    turtle.tracer(False)  # 关闭作图动画
    t1 = turtle.Turtle()
    t1.penup()
    t1.color("red")  # 设置第一个画笔的颜色
    t1.shape("circle")  # 设置第一个画笔的形状
    
    t2 = t1.clone()
    t2.color("blue") # 设置第二个画笔的颜色
    t2.forward(100)
    t3 = t2.clone()
    t3.forward(100) 
    t3.color("yellow") # 设置第三个画笔的颜色
    turtle.update()   # 作完图后更新缓存内容到显示器
    turtle.done()
demo3()

效果图:
多个不同形状的画笔

注意:
以下两行代码要配合使用的.关闭动画效果,使图形显示达成瞬时完成的效果.需要作完图后将整个图形内容从内存更新到显示器上.

turtle.tracer(False)  # 关闭作图动画
turtle.update()   # 作完图后更新缓存内容到显示器

有了以上的基础,我们可以考虑用turtle来实现一些简单的动画效果了.

后记

今天开始接触的内容使我们将turtle使用的更好的,做出更加精彩作品.
工具,在我们手上,如何更好的利用它,需要我们开拓自己的思维,去见一见外面的世界.

猜你喜欢

转载自blog.csdn.net/weixin_41810846/article/details/111563983