Turtle绘制分形树

import turtle

def draw_branch(branch_length):
    if branch_length > 5:           #限定绘制的树枝(包括树干、树枝和树叶)长度至少大于5
        if(branch_length<=20):      #如果长度小于20,即可判定是树叶,绘制成绿色
            turtle.color('green')
        else:
            turtle.color('brown')

        turtle.forward(branch_length)       #绘制树干
        turtle.right(20)
        draw_branch(branch_length-15)       #绘制每个节点分叉右侧的树枝

        turtle.left(40)
        draw_branch(branch_length - 15)     #绘制每个节点分叉左侧的树枝

        if (branch_length > 20):    #如果长度大于20,即可判定是树干或者树枝,绘制成棕色
            turtle.color('brown')
        turtle.right(20)
        turtle.backward(branch_length)      #左右侧树枝绘制好,返回节点处

def main():

    turtle.left(90)
    turtle.penup()
    turtle.backward(150)
    turtle.pendown()
    turtle.color('brown')
    draw_branch(80)     #树枝(其实是树干)初始长度为80
                        #设定后面的树枝随着树的增长长度依次减15
    turtle.exitonclick()

if __name__=='__main__':
    main()

最后的效果图如下:


注:如果代码中的递归部分理解起来有点困难,最好是运行一下,根据绘图的过程理解会比较容易。


猜你喜欢

转载自blog.csdn.net/z1508827637/article/details/80712412
今日推荐