用python画一颗樱花树(不同品种) 实现代码:

 动态生成樱花
效果图(这个是动态的):

 实现代码:

 1 import turtle as T
 2 import random
 3 import time
 4 
 5 # 画樱花的躯干(60,t)
 6 def Tree(branch, t):
 7     time.sleep(0.0005)
 8     if branch > 3:
 9         if 8 <= branch <= 12:
10             if random.randint(0, 2) == 0:
11                 t.color('snow')  #
12             else:
13                 t.color('lightcoral')  # 淡珊瑚色
14             t.pensize(branch / 3)
15         elif branch < 8:
16             if random.randint(0, 1) == 0:
17                 t.color('snow')
18             else:
19                 t.color('lightcoral')  # 淡珊瑚色
20             t.pensize(branch / 2)
21         else:
22             t.color('sienna')  # 赭(zhě)色
23             t.pensize(branch / 10)  # 6
24         t.forward(branch)
25         a = 1.5 * random.random()
26         t.right(20 * a)
27         b = 1.5 * random.random()
28         Tree(branch - 10 * b, t)
29         t.left(40 * a)
30         Tree(branch - 10 * b, t)
31         t.right(20 * a)
32         t.up()
33         t.backward(branch)
34         t.down()
35 
36 # 掉落的花瓣
37 def Petal(m, t):
38     for i in range(m):
39         a = 200 - 400 * random.random()
40         b = 10 - 20 * random.random()
41         t.up()
42         t.forward(b)
43         t.left(90)
44         t.forward(a)
45         t.down()
46         t.color('lightcoral')  # 淡珊瑚色
47         t.circle(1)
48         t.up()
49         t.backward(a)
50         t.right(90)
51         t.backward(b)
52 
53 # 绘图区域
54 t = T.Turtle()
55 # 画布大小
56 w = T.Screen()
57 t.hideturtle()  # 隐藏画笔
58 t.getscreen().tracer(5, 0)
59 w.screensize(bg='wheat')  # wheat小麦
60 t.left(90)
61 t.up()
62 t.backward(150)
63 t.down()
64 t.color('sienna')
65 
66 # 画樱花的躯干
67 Tree(60, t)
68 # 掉落的花瓣
69 Petal(200, t)
70 w.exitonclick()

 飘落效果
效果图:

 实现代码:

 1 from turtle import *
 2 from random import *
 3 from math import *
 4 
 5 def tree(n,l):
 6     pd()#下笔
 7     #阴影效果
 8     t = cos(radians(heading()+45))/8+0.25
 9     pencolor(t,t,t)
10     pensize(n/3)
11     forward(l)#画树枝
12 
13     if n>0:
14         b = random()*15+10 #右分支偏转角度
15         c = random()*15+10 #左分支偏转角度
16         d = l*(random()*0.25+0.7) #下一个分支的长度
17         #右转一定角度,画右分支
18         right(b)
19         tree(n-1,d)
20         #左转一定角度,画左分支
21         left(b+c)
22         tree(n-1,d)
23         #转回来
24         right(c)
25     else:
26         #画叶子
27         right(90)
28         n=cos(radians(heading()-45))/4+0.5
29         pencolor(n,n*0.8,n*0.8)
30         circle(3)
31         left(90)
32         #添加0.3倍的飘落叶子
33         if(random()>0.7):
34             pu()
35             #飘落
36             t = heading()
37             an = -40 +random()*40
38             setheading(an)
39             dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
40             forward(dis)
41             setheading(t)
42             #画叶子
43             pd()
44             right(90)
45             n = cos(radians(heading()-45))/4+0.5
46             pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
47             circle(2)
48             left(90)
49             pu()
50             #返回
51             t=heading()
52             setheading(an)
53             backward(dis)
54             setheading(t)
55     pu()
56     backward(l)#退回
57 
58 bgcolor(0.5,0.5,0.5)#背景色
59 ht()#隐藏turtle
60 speed(0)#速度 1-10渐进,0 最快
61 tracer(0,0)
62 pu()#抬笔
63 backward(100)
64 left(90)#左转90度
65 pu()#抬笔
66 backward(300)#后退300
67 tree(12,100)#递归7层
68 done()

 暗色效果
效果:

 实现代码:

 1 from turtle import *
 2 from random import *
 3 from math import *
 4 
 5 def tree(n, l):
 6     pd()
 7     t = cos(radians(heading() + 45)) / 8 + 0.25
 8     pencolor(t, t, t)
 9     pensize(n / 4)
10     forward(l)
11     if n > 0:
12         b = random() * 15 + 10
13         c = random() * 15 + 10
14         d = l * (random() * 0.35 + 0.6)
15         right(b)
16         tree(n - 1, d)
17         left(b + c)
18         tree(n - 1, d)
19         right(c)
20     else:
21         right(90)
22         n = cos(radians(heading() - 45)) / 4 + 0.5
23         pencolor(n, n, n)
24         circle(2)
25         left(90)
26     pu()
27     backward(l)
28 bgcolor(0.5, 0.5, 0.5)
29 ht()
30 speed(0)
31 tracer(0, 0)
32 left(90)
33 pu()
34 backward(300)
35 tree(13, 100)
36 done()

更多精彩文章文章关注微信公众号python社区营

学习python申请技术交流群:887934385 分享学习资料及视频

原文地址:https://www.cnblogs.com/pypypy/p/12124444.html