0 環境
Python版本:3.6.6
作業系統:Mac OS Mojave 10.14.2
1 引言
最近我媳婦每天晚上吃飯時候也拿手機看,上廁所也在看。
看著看著還會笑?WTF?你在幹嘛呢?
沒錯,她在看美隊……
這男人比我帥?……
比我有錢?……
還是比我有腔調?……
答案很明顯,我相信你們的眼睛都是雪亮的。
那問題來了,作為一個男人,怎麼能忍?雖然是個明星,雖然是假的,雖然已經挽回不了敗局了……那我就送個美隊的盾牌給你吧……
這篇文章不是Turtle的入門篇,所以關於基本的畫筆使用小胖不在這篇裡贅述了。有興趣的可以留言,我會根據你們的反饋來寫一篇或者一個系列。
2 實戰
先來看一個效果圖:
用過Turtle的都知道,畫筆是需要抬手和落筆的。這一點一定要理解,因為計算機是很死板的,你的每一個動作都必須告訴他,包括GC。
所以你的畫筆一旦落下,經過的每一處都會留下字跡。如果希望隔開一段距離就需要經過「抬筆」->「移動畫筆」->「落筆」。
所以我們先把這個動作封裝成一個函式:
def setpen(x, y):
# 抬筆
t.penup()
# 移動畫筆到(x, y)
t.goto(x, y)
# 落筆
t.pendown()
t.setheading(0)
複製程式碼
接下來就來畫盾牌。盾牌的話,注意觀察美隊盾牌,顏色是「紅」->「白」->「紅」->「藍」。
這裡有一個技巧,就是後面填充的圓圈背景色是可以覆蓋之前畫的圓圈的背景色。
def circle(x, y, r, color):
# 為了保證畫出的圓夠圓,所以我們把圓的邊設定的多一些
n = 36
angle = 360 / n
pi = 3.1415926
# 周長
c = 2 * pi * r
# 每條邊的長度
l = c / n
# 起始位置
start_x = x - l / 2
start_y = y + r
# 移動畫筆
setpen(start_x, start_y)
# 選擇畫筆顏色
t.pencolor(color)
# 選擇背景色
t.fillcolor(color)
# 填充
t.begin_fill()
for i in range(n):
t.forward(l)
t.right(angle)
t.end_fill()
複製程式碼
接下來就是畫裡面那個白色的五角星了,這裡就不註釋了,因為和畫圈的過程差不多。
def five_star(l):
setpen(0, 0)
t.setheading(162)
t.forward(150)
t.setheading(0)
t.fillcolor('WhiteSmoke')
t.begin_fill()
t.hideturtle()
t.penup()
for i in range(5):
t.forward(l)
t.right(144)
t.end_fill()
複製程式碼
主函式:
def sheild():
circle(0, 0, 300, 'red')
circle(0, 0, 250, 'white')
circle(0, 0, 200, 'red')
circle(0, 0, 150, 'blue')
five_star(284)
if __name__ == '__main__':
sheild()
# 結束烏龜圖
turtle.done()
複製程式碼
3 總結
這是一篇用Python畫畫的文章,更多有趣、好玩的Python應用、實戰盡在知識星球「人人都是Pythonista」。
關注公眾號「Python專欄」,回覆:美隊盾牌,獲取全套程式碼!