Python3 用turtle庫學畫畫——(一)美國隊長盾牌

turtle是Python中的一個標準庫(所以我們不需要另外安裝哈),可以非常方面的進行基礎圖形的繪製,我們可以用它畫櫻花、畫迷宮等很多有意思的圖形,接下來我們就看看吧!

 

OK,廢話不多說,我們今天就拿美國隊長的盾牌入個門,爲啥是它呢?因爲簡單唄,只有兩個基礎圖形操作,基本繪圖操作它都涉及了,不盤他盤誰。。。

在開始之前,我們先來分析一下,在我們實際生活中,我們畫畫需要用到什麼東西?
畫筆和紙呀,這不是廢話嘛!沒錯,我們實際生活中要筆和紙進行繪圖,那麼在turtle中也是如此,我們接下來就看看turtle的筆和紙。

import turtle    # 導入turtle庫

turtle.setup(1000,1000,100,100)        # 設置畫布大小
turtle.setup(寬像素,高像素,橫座標位置,縱座標位置)

turtle.mainloop()    # 保持畫布一直存在

相信學過tkinter的同學對這幾行語句應該不陌生,特別是最後一句,是一毛一樣;恕我這裏沒有找到直接源碼,不然我們對照庫源碼會比較容易理解!

現在我們有了紙,那麼筆要怎麼設置呢?

 我們可以看在在畫布的正中間出現了一個紅色的箭頭,那麼這個就是我們畫筆的初始形態,這裏我們看不出畫筆的粗細,那麼我們畫一條線來看一下:
 

import turtle

turtle.setup(500,500,500,100)

turtle.pensize(5)            # 設置畫筆的粗細爲5像素
turtle.color('red','red')    # 設置畫筆的前景色爲紅色,背景色也爲紅色
                             # 這裏是什麼意思呢?前景色就好比是我們的勾線,背景色就是我們填充的顏色

turtle.forward(100)          # 朝畫筆的方向畫100像素的線段

turtle.mainloop()

好了,現在畫布和畫筆都有了,我們就可以愉快的來畫畫了,我們先來看一下這盾牌是長啥樣的:

我們可以看到,這玩意就是由四個圓和一個五角星構成的,四個圓大小不一,五角星在正中間;實際生活中畫畫,肯定是先畫輪廓,然後再填充顏色,但是這裏我們不是的,我們畫一個填充一個,一層一層覆蓋上去:

那麼廢話我們不多說,四個圓先走起:


我們之前也說了,畫筆默認是在畫布的正中央,這玩意轉了一圈又回來了,我要是想再畫一個小圓,那得挪位置呀!
畫布正中央就是座標(0,0),我們可以用turtle.goto(x,y),改變畫筆位置!

import turtle
import time

turtle.setup(1000,1000,500,100)

turtle.pensize(5)

turtle.color('red','red')
turtle.begin_fill()        # 開始填充顏色
turtle.circle(200)         # 繪製一個半徑爲200的圓
turtle.end_fill()          # 填充顏色完畢


turtle.goto(0,50)          # 將畫筆移動到(0,50)的位置,即向上移動了50個像素點
turtle.color('white','white')
turtle.begin_fill()
turtle.circle(150)
turtle.end_fill()

turtle.mainloop()

你不會準備一個圓寫5行代碼吧,這樣的代碼太冗餘了,聰明的同學應該早就封裝方法,到時候我們只需要告訴它參數就好了:

def circle(x,y,r,color):
    turtle.goto(x,y)
    turtle.color(color,color)
    turtle.begin_fill()
    turtle.circle(r)
    turtle.end_fill()
circle(0,0,200,'red')
circle(0,50,150,'white')
circle(0,100,100,'red')
circle(0,150,50,'blue')

現在我們已經把四個圓畫好了,就差點亮小星星了,先別急,turtle中可沒有直接繪製星形的方法哦!我們不妨回憶一下,我們生活中繪製五角星是怎麼畫的:

沒錯,其實就是五條線閉合起來就是五角星了,這裏的難點是,五角星的每個角應該是多少度呢?

我們一步一步來看,首先五角星的正中間是個正五邊形,那麼每個角的度數就是(180*3/5=)108度,那麼平角是180度,就可以得出相鄰角是72度,等腰三角形底角相同,就可以得出五角星的每個角應該就是36度啦。

那麼,現在我們已經知道角度了,我們就可以來畫五角星了:
但是怎麼旋轉畫筆呢?用turtle.right(角度)就可以了,這個方法的實際意思是順時針旋轉畫筆;

def wjx(x,y,l,color):
    turtle.goto(x,y)
    turtle.color(color, color)
    turtle.begin_fill()

    for i in range(5):
        turtle.forward(l)
        turtle.right(144)        # 這裏是不是很奇怪,我們不是算出是36嘛,這裏怎麼是144呢?
                            # 這裏不做解釋,太傻,自己體會

    turtle.end_fill()
wjx(0,0,100,"white")

現在我們萬事俱備只欠東風了,是不是小星星不好放呀,我也是找了好久的位置的:

import turtle

turtle.setup(1000,1000)

def circle(x,y,r,color):
    turtle.goto(x,y)
    turtle.color(color,color)
    turtle.begin_fill()
    turtle.circle(r)
    turtle.end_fill()
circle(0,0,200,'red')
circle(0,50,150,'white')
circle(0,100,100,'red')
circle(0,150,50,'blue')

def wjx(x,y,l,color):
    turtle.goto(x,y)
    turtle.color(color, color)
    turtle.begin_fill()

    for i in range(5):
        turtle.forward(l)
        turtle.right(144)

    turtle.end_fill()
wjx(-48,216,95,"white")

turtle.mainloop()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章