Python实现樱花
效果图 (源码在下面)
源码:
from turtle import *
from random import *
from math import *def tree(n, l):pd() # 下笔# 阴影效果t = cos(radians(heading() + 45)) / 8 + 0.25pencolor(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.5ran = random()# 这里相比于原来随机添加了填充的圆圈,让樱花叶子看起来更多一点if (ran > 0.7):begin_fill()circle(3)fillcolor('pink')# 把原来随机生成的叶子换成了统一的粉色pencolor("pink")circle(3)if (ran > 0.7):end_fill()left(90)# 添加0.3倍的飘落叶子if (random() > 0.7):pu()# 飘落t = heading()an = -40 + random() * 40setheading(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.5pencolor(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.956, 0.9255, 0.9882) # 设置背景色(把灰色换成淡紫色)
ht() # 隐藏turtle
speed(0) # 速度 1-10渐进,0 最快
tracer(0, 0)
pu() # 抬笔
backward(50)
left(90) # 左转90度
pu() # 抬笔
backward(300) # 后退300
tree(12, 100) # 递归7层
done()