求大神指点python画树

要求画一个树的树干,两边对称,看上去是一颗树的支架就行

from turtle import *
from random import *
from math import *
 
 
class Tree:
 
    def __init__(self):
        setup(1000, 500)
        bgcolor(1, 1, 1)  # 背景色
        # ht()  # 隐藏turtle
        speed(10)  # 速度 1-10渐进,0 最快
        # tracer(1, 100)    # 设置绘图屏幕刷新频率,参数1设置在正常刷新频次的第参数1次刷新,参数2设置每次刷新的时延
        tracer(0, 0)
        pu()  # 抬笔
        backward(100)
        # 保证笔触箭头方向始终不向下,此处使其左转90度,而不是右转
        left(90)  # 左转90度
        backward(300)  # 后退300
 
    def tree(self, n, l):
        pd()    # 下笔
        # 阴影效果
        t = cos(radians(heading()+45))/8+0.25
        pencolor(t, t, t)
        pensize(n/1.2)
        forward(l)  # 画树枝
 
        if n > 0:
            b = random()*15+10  # 右分支偏转角度
            c = random()*15+10  # 左分支偏转角度
            d = l*(random()*0.25+0.7)  # 下一个分支的长度
            # 右转一定角度,画右分支
            right(b)
            self.tree(n-1, d)
            # 左转一定角度,画左分支
            left(b+c)
            self.tree(n-1, d)
            # 转回来
            right(c)
        else:
            # 画叶子
            right(90)
            n = cos(radians(heading()-45))/4+0.5
            pencolor(n,n*0.8,n*0.8)
            fillcolor(n,n*0.8,n*0.8)
            begin_fill()
            circle(3)
            left(90)
            end_fill()
 
            # 添加0.3倍的飘落叶子
            if random() > 0.7:
                pu()
                # 飘落
                t = heading()
                an = -40 + random()*40
                setheading(an)
                dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
                forward(dis)
                setheading(t)
                # 画叶子
                pd()
                right(90)
                n = cos(radians(heading()-45))/4+0.5
                pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
                fillcolor(n, n * 0.8, n * 0.8)
                begin_fill()
                circle(2)
                left(90)
                end_fill()
                pu()
                # 返回
                t = heading()
                setheading(an)
                backward(dis)
                setheading(t)
            # pass
        pu()
        backward(l)     # 退回
 
 
def main():
    tree = Tree()
    tree.tree(12, 100)  # 递归7层
    done()
 
 
if __name__ == '__main__':
    main()
 

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632