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 ran = 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 () * 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.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 ()