Python——畫一棵漂亮的櫻花樹(不同種櫻花+玫瑰+圣誕樹喔)

最近翻到一篇知乎醋安,上面有不少用Python(大多是turtle庫(kù))繪制的樹圖,感覺(jué)很漂亮滥嘴,我整理了一下木蹬,挑了一些我覺(jué)得不錯(cuò)的代碼分享給大家(這些我都測(cè)試過(guò),確實(shí)可以生成喔~)

one 櫻花樹

?動(dòng)態(tài)生成櫻花

效果圖(這個(gè)是動(dòng)態(tài)的):


實(shí)現(xiàn)代碼:

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()

飄落效果

效果圖:


代碼:

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 #右分支偏轉(zhuǎn)角度

? ? ? ? c = random()*15+10 #左分支偏轉(zhuǎn)角度

? ? ? ? d = l*(random()*0.25+0.7) #下一個(gè)分支的長(zhǎng)度

? ? ? ? #右轉(zhuǎn)一定角度,畫右分支

? ? ? ? right(b)

? ? ? ? tree(n-1,d)

? ? ? ? #左轉(zhuǎn)一定角度若皱,畫左分支

? ? ? ? left(b+c)

? ? ? ? tree(n-1,d)

? ? ? ? #轉(zhuǎn)回來(lái)

? ? ? ? right(c)

? ? else:

? ? ? ? #畫葉子

? ? ? ? right(90)

? ? ? ? n=cos(radians(heading()-45))/4+0.5

? ? ? ? pencolor(n,n*0.8,n*0.8)

? ? ? ? circle(3)

? ? ? ? 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.5,0.5,0.5)#背景色

ht()#隱藏turtle

speed(0)#速度 1-10漸進(jìn)镊叁,0 最快

tracer(0,0)

pu()#抬筆

backward(100)

left(90)#左轉(zhuǎn)90度

pu()#抬筆

backward(300)#后退300

tree(12,100)#遞歸7層

done()


?暗色效果

效果:


代碼:

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 / 4)

? ? forward(l)

? ? if n > 0:

? ? ? ? b = random() * 15 + 10

? ? ? ? c = random() * 15 + 10

? ? ? ? d = l * (random() * 0.35 + 0.6)

? ? ? ? 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

? ? ? ? pencolor(n, n, n)

? ? ? ? circle(2)

? ? ? ? left(90)

? ? pu()

? ? backward(l)

bgcolor(0.5, 0.5, 0.5)

ht()

speed(0)

tracer(0, 0)

left(90)

pu()

backward(300)

tree(13, 100)

done()


玫瑰花

效果(有繪制過(guò)程)


from turtle import *

import time

setup(1000,800,0,0)

speed(0)

penup()

seth(90)

fd(340)

seth(0)

pendown()

speed(5)

begin_fill()

fillcolor('red')

circle(50,30)

for i in range(10):

? ? fd(1)

? ? left(10)

circle(40,40)

for i in range(6):

? ? fd(1)

? ? left(3)

circle(80,40)

for i in range(20):

? ? fd(0.5)

? ? left(5)

circle(80,45)

for i in range(10):

? ? fd(2)

? ? left(1)

circle(80,25)

for i in range(20):

? ? fd(1)

? ? left(4)

circle(50,50)

time.sleep(0.1)

circle(120,55)

speed(0)

seth(-90)

fd(70)

right(150)

fd(20)

left(140)

circle(140,90)

left(30)

circle(160,100)

left(130)

fd(25)

penup()

right(150)

circle(40,80)

pendown()

left(115)

fd(60)

penup()

left(180)

fd(60)

pendown()

end_fill()

right(120)

circle(-50,50)

circle(-20,90)

speed(1)

fd(75)

speed(0)

circle(90,110)

penup()

left(162)

fd(185)

left(170)

pendown()

circle(200,10)

circle(100,40)

circle(-52,115)

left(20)

circle(100,20)

circle(300,20)

speed(1)

fd(250)

penup()

speed(0)

left(180)

fd(250)

circle(-300,7)

right(80)

circle(200,5)

pendown()

left(60)

begin_fill()

fillcolor('green')

circle(-80,100)

right(90)

fd(10)

left(20)

circle(-63,127)

end_fill()

penup()

left(50)

fd(20)

left(180)

pendown()

circle(200,25)

penup()

right(150)

fd(180)

right(40)

pendown()

begin_fill()

fillcolor('green')

circle(-100,80)

right(150)

fd(10)

left(60)

circle(-80,98)

end_fill()

penup()

left(60)

fd(13)

left(180)

pendown()

speed(1)

circle(-200,23)

exitonclick()


three 圣誕樹

?圣誕樹 (動(dòng)態(tài)生成效果)


代碼:

from turtle import *

import random

import time

n = 100.0

speed("fastest")

screensize(bg='seashell')

left(90)

forward(3*n)

color("orange", "yellow")

begin_fill()

left(126)

for i in range(5):

? ? forward(n/5)

? ? right(144)

? ? forward(n/5)

? ? left(72)

end_fill()

right(126)

color("dark green")

backward(n*4.8)

def tree(d, s):

? ? if d <= 0: return

? ? forward(s)

? ? tree(d-1, s*.8)

? ? right(120)

? ? tree(d-3, s*.5)

? ? right(120)

? ? tree(d-3, s*.5)

? ? right(120)

? ? backward(s)

tree(15, n)

backward(n/2)

for i in range(200):

? ? a = 200 - 400 * random.random()

? ? b = 10 - 20 * random.random()

? ? up()

? ? forward(b)

? ? left(90)

? ? forward(a)

? ? down()

? ? if random.randint(0, 1) == 0:

? ? ? ? ? ? color('tomato')

? ? else:

? ? ? ? color('wheat')

? ? circle(2)

? ? up()

? ? backward(a)

? ? right(90)

? ? backward(b)

time.sleep(60)

未完待續(xù)、

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末走触,一起剝皮案震驚了整個(gè)濱河市晦譬,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌互广,老刑警劉巖敛腌,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異惫皱,居然都是意外死亡像樊,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門旅敷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)生棍,“玉大人,你說(shuō)我怎么就攤上這事媳谁⊥康危” “怎么了友酱?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)氢妈。 經(jīng)常有香客問(wèn)我粹污,道長(zhǎng),這世上最難降的妖魔是什么首量? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任壮吩,我火速辦了婚禮,結(jié)果婚禮上加缘,老公的妹妹穿的比我還像新娘鸭叙。我一直安慰自己,他們只是感情好拣宏,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布沈贝。 她就那樣靜靜地躺著,像睡著了一般勋乾。 火紅的嫁衣襯著肌膚如雪宋下。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天辑莫,我揣著相機(jī)與錄音学歧,去河邊找鬼。 笑死各吨,一個(gè)胖子當(dāng)著我的面吹牛枝笨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播揭蜒,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼横浑,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了屉更?” 一聲冷哼從身側(cè)響起徙融,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎瑰谜,沒(méi)想到半個(gè)月后张咳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡似舵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了葱峡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砚哗。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖砰奕,靈堂內(nèi)的尸體忽然破棺而出蛛芥,到底是詐尸還是另有隱情提鸟,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布仅淑,位于F島的核電站称勋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏涯竟。R本人自食惡果不足惜赡鲜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望庐船。 院中可真熱鬧银酬,春花似錦、人聲如沸筐钟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)篓冲。三九已至李破,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間壹将,已是汗流浹背嗤攻。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞭恰,地道東北人屯曹。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惊畏,于是被迫代替她去往敵國(guó)和親恶耽。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容