Python 畫浪漫櫻花(動態(tài)畫+飄落效果+暗色效)

前言

Turtle庫是Python語言中一個很流行的繪制圖像的函數(shù)庫胁出。

想象一個小烏龜型型,在一個橫軸為x、縱軸為y的坐標系原點全蝶,(0,0)位置開始闹蒜,它根據(jù)一組函數(shù)指令的控制,在這個平面坐標系中移動抑淫,從而在它爬行的路徑上繪制了圖形绷落。


接下來,我們就要使用Turtle函數(shù)繪制幾種櫻花樹:

說明下:代碼里用了隨機函數(shù)丈冬,所以每次執(zhí)行過程不僅僅是動態(tài)的嘱函,而且結(jié)果也是不同的。

1埂蕊、動態(tài)生成櫻花

結(jié)果展示:(這個是動態(tài)的往弓,不會做gif,只能展示下結(jié)果)


代碼如下:

# coding=utf-8
# 畫一棵櫻花
 
import turtle
import random
from turtle import *
from time import sleep
 
# 畫櫻花的軀干(60,t)
def tree(branchLen, t):
    sleep(0.0005)
    if branchLen > 3:
        if 8 <= branchLen <= 12:
            if random.randint(0, 2) == 0:
                t.color('snow')  # 白
            else:
                t.color('lightcoral')  # 淡珊瑚色
            t.pensize(branchLen / 3)
        elif branchLen < 8:
            if random.randint(0, 1) == 0:
                t.color('snow')
            else:
                t.color('lightcoral')  # 淡珊瑚色
            t.pensize(branchLen / 2)
        else:
            t.color('sienna')  # 赭(zhě)色
            t.pensize(branchLen / 10)  # 6
        t.forward(branchLen)
        a = 1.5 * random.random()
        t.right(20 * a)
        b = 1.5 * random.random()
        tree(branchLen - 10 * b, t)
        t.left(40 * a)
        tree(branchLen - 10 * b, t)
        t.right(20 * a)
        t.up()
        t.backward(branchLen)
        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)
 
def main():
    # 繪圖區(qū)域
    t = turtle.Turtle()
    # 畫布大小
    w = turtle.Screen()
    t.hideturtle()  # 隱藏畫筆
    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()
 
main()

2蓄氧、飄落效果櫻花

結(jié)果展示:



代碼如下:

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) #下一個分支的長度
        #右轉(zhuǎn)一定角度,畫右分支
        right(b)
        tree(n-1,d)
        #左轉(zhuǎn)一定角度函似,畫左分支
        left(b+c)
        tree(n-1,d)
        #轉(zhuǎn)回來
        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漸進,0 最快
tracer(0,0)
pu()#抬筆
backward(100)
left(90)#左轉(zhuǎn)90度
pu()#抬筆
backward(300)#后退300
tree(12,100)#遞歸7層
done()

3喉童、暗色效果櫻花

結(jié)果展示:



代碼如下:

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()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末撇寞,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蔑担,老刑警劉巖牌废,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異啤握,居然都是意外死亡鸟缕,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門排抬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來懂从,“玉大人,你說我怎么就攤上這事蹲蒲》Γ” “怎么了?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵届搁,是天一觀的道長缘薛。 經(jīng)常有香客問我,道長卡睦,這世上最難降的妖魔是什么掩宜? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任,我火速辦了婚禮么翰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘辽旋。我一直安慰自己浩嫌,他們只是感情好,可當我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布补胚。 她就那樣靜靜地躺著码耐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪溶其。 梳的紋絲不亂的頭發(fā)上骚腥,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天,我揣著相機與錄音瓶逃,去河邊找鬼束铭。 笑死,一個胖子當著我的面吹牛厢绝,可吹牛的內(nèi)容都是我干的契沫。 我是一名探鬼主播,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼昔汉,長吁一口氣:“原來是場噩夢啊……” “哼懈万!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤会通,失蹤者是張志新(化名)和其女友劉穎口予,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體涕侈,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡沪停,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了驾凶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片牙甫。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡口渔,死狀恐怖杨帽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铺然,我是刑警寧澤技肩,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布且轨,位于F島的核電站,受9級特大地震影響虚婿,放射性物質(zhì)發(fā)生泄漏旋奢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一然痊、第九天 我趴在偏房一處隱蔽的房頂上張望至朗。 院中可真熱鬧,春花似錦剧浸、人聲如沸锹引。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嫌变。三九已至,卻和暖如春躬它,著一層夾襖步出監(jiān)牢的瞬間腾啥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工冯吓, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留倘待,地道東北人。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓桑谍,卻偏偏與公主長得像延柠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锣披,可洞房花燭夜當晚...
    茶點故事閱讀 43,446評論 2 348

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