turtle作品--落葉樹
阿新 • • 發佈:2018-12-27
記:最近研究python,偶然看到畫圖工具turtle做的一個作品,beautiful,記錄下。
效果圖
程式碼部分
from turtle import *
from random import *
from math import *
def tree(n, l):
pd() # 下筆
# 陰影效果
t = cos(radians(heading() + 45)) / 8 + 0.25
pencolor(t, t, t)
pensize(n / 3)
forward(l) # 畫樹枝
if n > 0:
b = random() * 15 + 10 # 右分支偏轉角度
c = random() * 15 + 10 # 左分支偏轉角度
d = l * (random() * 0.25 + 0.7) # 下一個分支的長度
# 右轉一定角度,畫右分支
right(b)
tree(n - 1, d)
# 左轉一定角度,畫左分支
left(b + c)
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)
circle(3)
left(90)
# 新增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)
circle(2)
left(90)
pu()
# 返回
t = heading()
setheading(an)
backward(dis)
setheading(t)
pu()
backward(l) # 退回
bgcolor(0.5, 0.5, 0.5) # 背景色
ht() # 隱藏turtle
speed(0) # 速度,1-10漸進,0最快
tracer(0, 0)
pu() # 擡筆
backward(100)
left(90) # 左轉90度
pu() # 擡筆
backward(300) # 後退300
tree(12, 100) # 遞迴7層
done()