春天到了,萬物復(fù)蘇,很多小伙伴們都會出去踏青。時值3月12日植樹節(jié),很多小伙伴也會去參與植樹造林的活動。但是有些小伙伴所處的地方可能并不適合植樹,為了解決我們在植樹節(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è)置每次刷新的時延
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) # 下一個分支的長度
# 右轉(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í)海龜繪圖法,可以用代碼畫出很多好看的作品!
最后,編程雖然有趣,也別忘了到郊外去呼吸新鮮空氣哦。