python实现画一颗树和一片森林

python实现画一颗树和一片森林


实现效果


代码在这里


from turtle import Turtle

def tree(plist, l, a, f):
    """
    :param plist:画笔列表,指数型增加
    :param l: 画笔的长度,同时也是递归终止条件,注意下面的引用中是字母l,不是数字1
    :param a: 分开的两个树杈之间夹角的一半,固定值65°
    :param f: 子树与父树的比值
    :return: 返回一个基本的Y型的树
    """
    if l>5:
        lst = []
        for p in plist:
            p.forward(l)
            q = p.clone()
            p.left(a)
            q.right(a)
            lst.append(p)
            lst.append(q)
        tree(lst,l*f,a,f)

def maketree(x,y):
    """

    :param x: 树起点的横坐标
    :param y: 树起点的纵坐标
    :return: 返回一颗树
    """
    p = Turtle()
    p.color("green")
    p.pensize(5)
    p.hideturtle()  # 隐藏那只小乌龟

    p.getscreen().tracer(30,0)# 获得屏幕句柄,可以对其进行操作,每30次操作将屏幕刷新,延时为0
    p.speed(10)
    p.left(90)

    p.penup()
    p.goto(x, y)
    p.pendown()  # 此三句向来组合使用,意思为起笔,移动,落笔之意

    t = tree([p],200,65,0.6375)
    print(len(p.getscreen().turtles()))   #一共用了多少笔划
def main():
    """
    主函数,赋树的起点坐标
    """
    maketree(0,0)
    maketree(-200,-200)
    maketree(200,-200)

main()

你可能感兴趣的:(python)