用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 分享學習資料及視頻


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM