Python繪制七彩花朵(用Turtle)

前言
來啦來啦來啦,小伙伴們快快來領(lǐng)取七彩花瓣雨吧?。?/p>
小海龜
老生常談啦,在用python畫櫻花樹前,我們先來了解一下turtle吧!
小海龜(Turtle)是Python中畫圖的一個重要的包(內(nèi)置包),里面包含豐富的畫圖工具以及畫圖的各種功能,當(dāng)你學(xué)會了用Turtle畫圖后,你可以畫任何你想畫的圖案哦。
1.1 Turtle畫板
Turtle的畫板大小可以用turtle.setup()函數(shù)來設(shè)置
turtle.setup(width,height)
設(shè)置畫板的大小,包含寬和高,width為寬,height為高。
1.2 Turtle畫筆
Turtle的畫筆有幾個常用的函數(shù):
①turtle.penup():抬起畫筆,此時移動畫筆不會在畫布上留下痕跡哦
②turtle.pendown():放下畫筆,與turtle.penup相對應(yīng),放下畫筆后就可以繼續(xù)畫畫了(放下畫筆后畫畫會在畫布上留下痕跡)
③turtle.pensize():控制畫筆的大小(可以根據(jù)需求自行定義畫筆的大小哦)
④turtle.pencolor():控制畫筆的顏色(可以自己在網(wǎng)上查閱所有python可以使用的顏色,python里面可以用的顏色有很多的哦)
⑤turtle.hideturtle():隱藏畫筆(隱藏畫筆以后畫圖時畫筆就看不到了)
1.3 Turtle畫圖
在畫圖的過程中,我們經(jīng)常要使用一些簡單的移動函數(shù):
①turtle.forward(x):將畫筆向前移動x個像素(x可以理解為距離)
②turtle.backward(x):將畫筆向后退x個像素(x可以理解為距離)
③turtle.left(n):將畫筆向左旋轉(zhuǎn)n度
④turtle.right(n):將畫筆向右旋轉(zhuǎn)n度
⑤turtle.speed():設(shè)置畫筆畫圖的速度(1~10遞增,0最快)
1.4 Turtle填色
在畫好圖后,我們經(jīng)常需要對其進(jìn)行填色,這里可以用turtle.fillcolor()函數(shù),括號里寫入你想填充的顏色即可。
在使用turtle.fillcolor()函數(shù)要注意其基本格式:
turtle.beginfill() #開始填充
turtle.fillcolor() #輸入填充的顏色
turtle.endfill() #結(jié)束填充
1.5 Turtle寫字
在完成整個畫圖后,我們可以使用turtle.write()函數(shù)進(jìn)行寫字
turtle.write(" ",move,align,font)① 第一個位置雙引號內(nèi)填入要寫的字
② move(可選):在默認(rèn)情況下,move為false。如果move為true,則筆將移動到右下角
③ align(可選):可取值是left即左、center即中、right即右之一,是字符串格式
④ font(可選):字體三元組(fontname、fontsize、fonttype),fontname即字體名稱(字符串格式,如“宋體”),fontsize即字體大?。?,fonttype即字體類型如:normal(普通)、bold(粗體)、italic(斜體)
花朵類
class Flower(): #每個花朵(花朵類)
def __init__(self):
self.r = ra.randint(8,12) #花朵的半徑
self.x = ra.randint(-1000,1000) #花朵的橫坐標(biāo)
self.y = ra.randint(-500,500) #花朵的縱坐標(biāo)
self.f = ra.uniform(-3.14,3.14) #花朵左右移動呈正弦函數(shù)
self.speed = ra.randint(5,10) #花朵移動速度
self.color = ra.choice(colors) #花朵的顏色
self.outline = 1 #花朵的外框大?。刹灰?/pre>這段代碼是定義了一個名為Flower的類,該類描述了花朵對象的屬性和行為。在該類的初始化函數(shù)__init__中,定義了花朵的半徑、橫縱坐標(biāo)、左右移動方向、移動速度、顏色和外框大小等屬性,并通過產(chǎn)生隨機(jī)數(shù)來賦值。這些屬性可以用于繪制花朵圖像或控制花朵的運(yùn)動軌跡。Flower類的定義使得在之后的代碼中可以更方便地創(chuàng)建和操作花朵對象。
移動函數(shù)
def move(self): #花朵移動函數(shù)
if self.y >= -500: #當(dāng)花朵還在畫布中時
self.y -= self.speed #設(shè)置上下移動速度
self.x += self.speed * math.sin(self.f) #設(shè)置左右移動速度
self.f += 0.1 #可以理解成標(biāo)志,改變左右移動的方向
else: #當(dāng)花朵漂出了畫布時,重新生成一個花朵
self.r = ra.randint(8,12)
self.x = ra.randint(-1000,1000)
self.y = 500
self.f = ra.uniform(-3.14,3.14)
self.speed = ra.randint(5,10)
self.color = ra.choice(colors)
self.outline = 1這段代碼定義了一個move函數(shù),描述花朵對象的運(yùn)動方式。如果花朵仍在畫布中(y >= -500),則花朵會以設(shè)定的速度(speed)向上移動,并以設(shè)定的左右移動方向(f)左右擺動。左右移動的方向變化由f值的增加控制(f += 0.1)。如果花朵漂出了畫布,則通過產(chǎn)生隨機(jī)數(shù)重新生成一個花朵對象,以保證畫布上始終有花朵。這樣,每個花朵對象都具有獨(dú)立的屬性和行為,并且可以在畫布上自由運(yùn)動。
畫花朵
def draw(self): #畫花朵函數(shù),就是用turtle畫花朵
t.penup()
t.goto(self.x,self.y)
t.setheading(self.x)
t.pendown()
t.left(36)
t.color(self.color)
t.begin_fill()
t.fillcolor(self.color)
for i in range(5):
t.left(-72)
t.circle(self.r,extent=144)
t.end_fill()
#t.right(36)
#t.begin_fill()
#t.fillcolor("red")
#t.color("white")
#t.circle(12)
#t.end_fill()這段代碼是定義了一個名為draw的函數(shù),使用turtle庫在畫布上繪制花朵。在該函數(shù)中,首先通過設(shè)置筆的位置和角度,在畫布上定位要繪制的花朵位置。接著,通過設(shè)置畫筆顏色和填充顏色,在花瓣中繪制五角花瓣。其中,通過循環(huán)語句和圓弧函數(shù)circle()實(shí)現(xiàn)了繪制五角花瓣時的細(xì)節(jié)。最后,通過end_fill()函數(shù)來填充花朵內(nèi)部的顏色。通過調(diào)用這個函數(shù),每個花朵都可以在畫布上展現(xiàn)出來,并且顏色、形狀等屬性也隨機(jī)生成。
尾聲
到此這篇關(guān)于Python繪制七彩花朵的文章就介紹到這了,更多相關(guān)Python七彩花朵內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Keras在訓(xùn)練期間可視化訓(xùn)練誤差和測試誤差實(shí)例
這篇文章主要介紹了Keras在訓(xùn)練期間可視化訓(xùn)練誤差和測試誤差實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
python神經(jīng)網(wǎng)絡(luò)之批量學(xué)習(xí)tf.train.batch函數(shù)示例
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)之批量學(xué)習(xí)tf.train.batch函數(shù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05
使用Python腳本zabbix自定義key監(jiān)控oracle連接狀態(tài)
這篇文章主要介紹了使用Python腳本zabbix自定義key監(jiān)控oracle連接狀態(tài),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08
django表單中的按鈕獲取數(shù)據(jù)的實(shí)例分析
在本篇文章里小編給大家詳解了關(guān)于django表單中的按鈕獲取數(shù)據(jù)的內(nèi)容,需要的朋友們可以參考下。2020-07-07
Python中網(wǎng)絡(luò)請求中Retry策略實(shí)現(xiàn)方式
這篇文章主要介紹了Python中網(wǎng)絡(luò)請求中Retry策略實(shí)現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
Python代碼實(shí)現(xiàn)粒子群算法圖文詳解
這篇文章主要介紹了Python編程實(shí)現(xiàn)粒子群算法詳解,涉及粒子群算法的原理,過程,以及實(shí)現(xiàn)代碼示例,具有一定參考價值,需要的朋友可以了解下2021-08-08
Django的models中on_delete參數(shù)詳解
這篇文章主要介紹了Django的models中on_delete參數(shù)詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07

