下列代码是在python3实现的,python2版本可能会存在不兼容的问题;
大树的效果图如下:
实现代码如下:
from turtle import *
from random import *
from math import *
def tree(n,k):
pd()#下笔
#绘制树干
t = cos(radians(heading()+45))/4+0.25#radians是将角度转换成弧度弦,cos的传入参数需要是弧度,将弧度返回成余弦,值的范围是[-1,1]
pensize(n*3)
pencolor('black')#设置画笔的颜色
forward(k)
if n>0:
b = random()*15+14 #右分支偏转角度
c = random()*15+12 #左分支偏转角度
d = k*(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
color('green','green')
begin_fill()
circle(12)#画圈圈树叶
left(90)
fillcolor('green')
end_fill()
pu()
backward(k)#退回
bgcolor(0.5,0.5,0.5)#背景色
ht()#隐藏turtle
speed(5)#速度 1-10渐进,0 最快
tracer(0,0)
pu()#抬笔
backward(100)
left(90)#左转90度
pu()#抬笔
backward(300)#后退300
tree(10,103)#递归7层
done()
目前还不会把树叶绘制成真正的树叶模样,圆圈树叶凑合看吧先,待我再学一学,学会了再更新代码。
动态樱花的效果图如下: