用python繪制櫻花樹
黑夜可能漫長,但總會迎來溫暖的陽光,三月如期而至,武大的櫻花又一次盛開。那么今天就一起來看看怎樣在python中畫一棵美麗的櫻花樹~
說到用python畫畫,那當(dāng)然就是小烏龜Turtle庫了,為啥是turtle呢,想象一個(gè)小烏龜,在一個(gè)橫軸為x、縱軸為y的坐標(biāo)系原點(diǎn),(0,0)位置開始,它根據(jù)一組函數(shù)指令的控制,在這個(gè)平面坐標(biāo)系中移動,從而在它爬行的路徑上繪制了圖形。
一、安裝與引入
安裝沒有什么難度直接pip安裝就可以
pip install turtle
可使用以下3種方法引入:

二、使用
turtle庫使用起來也很簡單,主要就是利用幾個(gè)核心的控制代碼
turtle.goto(x,y):直接跳轉(zhuǎn)到(x,y)點(diǎn),以繪圖窗口中心為原點(diǎn), turtle.fd(d):以當(dāng)前方向,往前行進(jìn)d像素。 turtle.bk(d):保持當(dāng)前方向不變,往后退行d像素。 turtle.circle(r,angle):以r為半徑圓的angle角度旋轉(zhuǎn)。 turtle.penup():抬筆 turtle.pendown():落筆 urtle.left(angle):向左旋轉(zhuǎn)angle度。 turtle.right(angle):向右旋轉(zhuǎn)angle度。
比如繪制樹干部分的代碼可以這樣寫
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 6 <= branch <= 12: #
if random.randint(0, 2) == 0: #隨機(jī)繪制
t.color('snow') #設(shè)置顏色
else:
t.color('lightcoral') # 樹葉顏色
t.pensize(branch / 3)
elif branch < 6:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral') #
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
而寫字的部分就不用一筆一劃的去繪制,直接使用turtle.write()就可以在指定位置寫上你需要的文字。
write(arg,move=false,align='left',font=('arial',8,'normal'))
#arg--將寫入Turtle繪畫屏幕的文字。
#align(可選)--“左(left)”、“中(center)”或“右(right)”之一。
#font(可選)--(fontname、fontsize、fonttype)。
那么來看看最后效果吧!

完整源碼:
import turtle as T
import random
import time
# 畫櫻花的軀干(60,t)
def Tree(branch, t):
time.sleep(0.0005)
if branch > 3:
if 8 <= branch <= 12:
if random.randint(0, 2) == 0:
t.color('snow') # 白
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 3)
elif branch < 8:
if random.randint(0, 1) == 0:
t.color('snow')
else:
t.color('lightcoral') # 淡珊瑚色
t.pensize(branch / 2)
else:
t.color('sienna') # 赭(zhě)色
t.pensize(branch / 10) # 6
t.forward(branch)
a = 1.5 * random.random()
t.right(20 * a)
b = 1.5 * random.random()
Tree(branch - 10 * b, t)
t.left(40 * a)
Tree(branch - 10 * b, t)
t.right(20 * a)
t.up()
t.backward(branch)
t.down()
# 掉落的花瓣
def Petal(m, t):
for i in range(m):
a = 200 - 400 * random.random()
b = 10 - 20 * random.random()
t.up()
t.forward(b)
t.left(90)
t.forward(a)
t.down()
t.color('lightcoral') # 淡珊瑚色
t.circle(1)
t.up()
t.backward(a)
t.right(90)
t.backward(b)
# 繪圖區(qū)域
t = T.Turtle()
# 畫布大小
w = T.Screen()
t.hideturtle() # 隱藏畫筆
t.getscreen().tracer(5, 0)
w.screensize(bg='wheat') # wheat小麥
t.left(90)
t.up()
t.backward(150)
t.down()
t.color('sienna')
# 畫櫻花的軀干
Tree(60, t)
# 掉落的花瓣
Petal(200, t)
w.exitonclick()
以上就是用python繪制櫻花樹的詳細(xì)內(nèi)容,更多關(guān)于python繪圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python訪問MongoDB,并且轉(zhuǎn)換成Dataframe的方法
今天小編就為大家分享一篇Python訪問MongoDB,并且轉(zhuǎn)換成Dataframe的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
tkinter動態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法
這篇文章主要介紹了tkinter動態(tài)顯示時(shí)間的兩種實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01
使用Python實(shí)現(xiàn)遺傳算法的完整代碼
這篇文章主要介紹了使用Python實(shí)現(xiàn)遺傳算法,其本質(zhì)是一種高效、并行、全局搜索的方法,自適應(yīng)的控制搜索過程以求得最優(yōu)解,需要的朋友可以參考下2023-03-03
pycharm終端無法激活conda環(huán)境的解決辦法
如果您在PyCharm終端中無法激活conda環(huán)境,可能是由于PyCharm沒有正確配置conda解釋器,這篇文章主要給大家介紹了關(guān)于pycharm終端無法激活conda環(huán)境的解決辦法,需要的朋友可以參考下2023-09-09
python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn)
這篇文章主要介紹了python3 sorted 如何實(shí)現(xiàn)自定義排序標(biāo)準(zhǔn),具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03

