如何在python中种树?——python绘制唯美樱花树教程!

9,554次阅读
没有评论

共计 1507 个字符,预计需要花费 4 分钟才能阅读完成。

雨晨的清风
2022-03-12 15:18:10
浏览数 (6307)

春天到了,万物复苏,很多小伙伴们都会出去踏青。时值 3 月 12 日植树节,很多小伙伴也会去参与植树造林的活动。但是有些小伙伴所处的地方可能并不适合植树,为了解决我们在植树节没有种上树的遗憾,今天小编就带来使用 python 的海龟绘图法绘制樱花树的教程。小伙伴们赶快尝试一下吧。

先上效果图!

如何在 python 中种树?——python 绘制唯美樱花树教程!

代码如下:

from turtle import *
from random import *
from math import *
class Tree:
    def __init__(self):
        setup(1000, 700)
        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()

使用海龟绘图法进行图案的绘画,最大的难度并不是程序的编写,而是曲线的调整。到 python turtle 绘图入门教程 学习海龟绘图法,可以用代码画出很多好看的作品!

最后,编程虽然有趣,也别忘了到郊外去呼吸新鲜空气哦。

原文地址: 如何在 python 中种树?——python 绘制唯美樱花树教程!

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于2024-09-23发表,共计1507字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)