App下載

如何在python中種樹?——python繪制唯美櫻花樹教程!

雨晨的清風(fēng) 2022-03-12 15:18:10 瀏覽數(shù) (6292)
反饋

春天到了,萬物復(fù)蘇,很多小伙伴們都會(huì)出去踏青。時(shí)值3月12日植樹節(jié),很多小伙伴也會(huì)去參與植樹造林的活動(dòng)。但是有些小伙伴所處的地方可能并不適合植樹,為了解決我們?cè)谥矘涔?jié)沒有種上樹的遺憾,今天小編就帶來使用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漸進(jìn),0 最快
        # tracer(1, 100)    # 設(shè)置繪圖屏幕刷新頻率,參數(shù)1設(shè)置在正常刷新頻次的第參數(shù)1次刷新,參數(shù)2設(shè)置每次刷新的時(shí)延
        tracer(0, 0)
        pu()  # 抬筆
        backward(100)
        # 保證筆觸箭頭方向始終不向下,此處使其左轉(zhuǎn)90度,而不是右轉(zhuǎn)
        left(90)  # 左轉(zhuǎn)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  # 右分支偏轉(zhuǎn)角度
            c = random() * 15 + 10  # 左分支偏轉(zhuǎn)角度
            d = l * (random() * 0.25 + 0.7)  # 下一個(gè)分支的長度
            # 右轉(zhuǎn)一定角度,畫右分支
            right(b)
            self.tree(n - 1, d)
            # 左轉(zhuǎn)一定角度,畫左分支
            left(b + c)
            self.tree(n - 1, d)
            # 轉(zhuǎn)回來
            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()

使用海龜繪圖法進(jìn)行圖案的繪畫,最大的難度并不是程序的編寫,而是曲線的調(diào)整。到python turtle繪圖入門教程學(xué)習(xí)海龜繪圖法,可以用代碼畫出很多好看的作品!

最后,編程雖然有趣,也別忘了到郊外去呼吸新鮮空氣哦。

2 人點(diǎn)贊