Python繪制七彩花朵(用Turtle)
前言
來啦來啦來啦,小伙伴們快快來領(lǐng)取七彩花瓣雨吧?。?/p>
小海龜
老生常談啦,在用python畫櫻花樹前,我們先來了解一下turtle吧!
小海龜(Turtle)是Python中畫圖的一個(gè)重要的包(內(nèi)置包),里面包含豐富的畫圖工具以及畫圖的各種功能,當(dāng)你學(xué)會(huì)了用Turtle畫圖后,你可以畫任何你想畫的圖案哦。
1.1 Turtle畫板
Turtle的畫板大小可以用turtle.setup()函數(shù)來設(shè)置
turtle.setup(width,height)
設(shè)置畫板的大小,包含寬和高,width為寬,height為高。
1.2 Turtle畫筆
Turtle的畫筆有幾個(gè)常用的函數(shù):
①turtle.penup():抬起畫筆,此時(shí)移動(dòng)畫筆不會(huì)在畫布上留下痕跡哦
②turtle.pendown():放下畫筆,與turtle.penup相對(duì)應(yīng),放下畫筆后就可以繼續(xù)畫畫了(放下畫筆后畫畫會(huì)在畫布上留下痕跡)
③turtle.pensize():控制畫筆的大?。梢愿鶕?jù)需求自行定義畫筆的大小哦)
④turtle.pencolor():控制畫筆的顏色(可以自己在網(wǎng)上查閱所有python可以使用的顏色,python里面可以用的顏色有很多的哦)
⑤turtle.hideturtle():隱藏畫筆(隱藏畫筆以后畫圖時(shí)畫筆就看不到了)
1.3 Turtle畫圖
在畫圖的過程中,我們經(jīng)常要使用一些簡(jiǎn)單的移動(dòng)函數(shù):
①turtle.forward(x):將畫筆向前移動(dòng)x個(gè)像素(x可以理解為距離)
②turtle.backward(x):將畫筆向后退x個(gè)像素(x可以理解為距離)
③turtle.left(n):將畫筆向左旋轉(zhuǎn)n度
④turtle.right(n):將畫筆向右旋轉(zhuǎn)n度
⑤turtle.speed():設(shè)置畫筆畫圖的速度(1~10遞增,0最快)
1.4 Turtle填色
在畫好圖后,我們經(jīng)常需要對(duì)其進(jìn)行填色,這里可以用turtle.fillcolor()函數(shù),括號(hào)里寫入你想填充的顏色即可。
在使用turtle.fillcolor()函數(shù)要注意其基本格式:
turtle.beginfill() #開始填充
turtle.fillcolor() #輸入填充的顏色
turtle.endfill() #結(jié)束填充
1.5 Turtle寫字
在完成整個(gè)畫圖后,我們可以使用turtle.write()函數(shù)進(jìn)行寫字
turtle.write(" ",move,align,font)
① 第一個(gè)位置雙引號(hào)內(nèi)填入要寫的字
② move(可選):在默認(rèn)情況下,move為false。如果move為true,則筆將移動(dòng)到右下角
③ align(可選):可取值是left即左、center即中、right即右之一,是字符串格式
④ font(可選):字體三元組(fontname、fontsize、fonttype),fontname即字體名稱(字符串格式,如“宋體”),fontsize即字體大?。?,fonttype即字體類型如:normal(普通)、bold(粗體)、italic(斜體)
花朵類
class Flower(): #每個(gè)花朵(花朵類) 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) #花朵左右移動(dòng)呈正弦函數(shù) self.speed = ra.randint(5,10) #花朵移動(dòng)速度 self.color = ra.choice(colors) #花朵的顏色 self.outline = 1 #花朵的外框大小(可不要)
這段代碼是定義了一個(gè)名為Flower的類,該類描述了花朵對(duì)象的屬性和行為。在該類的初始化函數(shù)__init__中,定義了花朵的半徑、橫縱坐標(biāo)、左右移動(dòng)方向、移動(dòng)速度、顏色和外框大小等屬性,并通過產(chǎn)生隨機(jī)數(shù)來賦值。這些屬性可以用于繪制花朵圖像或控制花朵的運(yùn)動(dòng)軌跡。Flower類的定義使得在之后的代碼中可以更方便地創(chuàng)建和操作花朵對(duì)象。
移動(dòng)函數(shù)
def move(self): #花朵移動(dòng)函數(shù) if self.y >= -500: #當(dāng)花朵還在畫布中時(shí) self.y -= self.speed #設(shè)置上下移動(dòng)速度 self.x += self.speed * math.sin(self.f) #設(shè)置左右移動(dòng)速度 self.f += 0.1 #可以理解成標(biāo)志,改變左右移動(dòng)的方向 else: #當(dāng)花朵漂出了畫布時(shí),重新生成一個(gè)花朵 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
這段代碼定義了一個(gè)move函數(shù),描述花朵對(duì)象的運(yùn)動(dòng)方式。如果花朵仍在畫布中(y >= -500),則花朵會(huì)以設(shè)定的速度(speed)向上移動(dòng),并以設(shè)定的左右移動(dòng)方向(f)左右擺動(dòng)。左右移動(dòng)的方向變化由f值的增加控制(f += 0.1)。如果花朵漂出了畫布,則通過產(chǎn)生隨機(jī)數(shù)重新生成一個(gè)花朵對(duì)象,以保證畫布上始終有花朵。這樣,每個(gè)花朵對(duì)象都具有獨(dú)立的屬性和行為,并且可以在畫布上自由運(yùn)動(dòng)。
畫花朵
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()
這段代碼是定義了一個(gè)名為draw的函數(shù),使用turtle庫(kù)在畫布上繪制花朵。在該函數(shù)中,首先通過設(shè)置筆的位置和角度,在畫布上定位要繪制的花朵位置。接著,通過設(shè)置畫筆顏色和填充顏色,在花瓣中繪制五角花瓣。其中,通過循環(huán)語(yǔ)句和圓弧函數(shù)circle()實(shí)現(xiàn)了繪制五角花瓣時(shí)的細(xì)節(jié)。最后,通過end_fill()函數(shù)來填充花朵內(nèi)部的顏色。通過調(diào)用這個(gè)函數(shù),每個(gè)花朵都可以在畫布上展現(xiàn)出來,并且顏色、形狀等屬性也隨機(jī)生成。
尾聲
到此這篇關(guān)于Python繪制七彩花朵的文章就介紹到這了,更多相關(guān)Python七彩花朵內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python scatter函數(shù)用法實(shí)例詳解
這篇文章主要介紹了python scatter函數(shù)用法實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Python文件打開方式實(shí)例詳解【a、a+、r+、w+區(qū)別】
這篇文章主要介紹了Python文件打開方式,結(jié)合實(shí)例形式詳細(xì)分析了Python文件打開函數(shù)的使用及a、a+、r+、w+等屬性功能、使用區(qū)別與相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-03-03Python使用socket模塊實(shí)現(xiàn)簡(jiǎn)單tcp通信
這篇文章主要介紹了Python使用socket模塊實(shí)現(xiàn)簡(jiǎn)單tcp通信,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08Python數(shù)學(xué)形態(tài)學(xué)實(shí)例分析
這篇文章主要介紹了Python數(shù)學(xué)形態(tài)學(xué),結(jié)合實(shí)例形式分析了Python數(shù)學(xué)運(yùn)算與圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2019-09-09python協(xié)程庫(kù)asyncio(異步io)問題
這篇文章主要介紹了python協(xié)程庫(kù)asyncio(異步io)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11