Python中的高級turtle(海龜)作圖(續)


四、填色

color 函數有三個參數。第一個參數指定有多少紅色,第二個指定有多少綠色,第三個指定有多少藍色。比如,要得到車子的亮紅色,我們用 color(1,0,0),也就是讓海龜用百分之百的紅色畫筆。

這種紅色、綠色、藍色的混搭叫做RGB(Red,Green,Blue)。因為紅綠藍是色光上的三原色,任何顏色都可以通過改變三原色的比重來調配出來。

雖然我們不是在計算機屏幕上混合顏料(我們用的是光!),但我們可以把RGB方案想象成三個顏料桶,一個紅的,一個綠的和一個藍的。每個桶里都是滿的,我們可以看成滿桶的值是1(100%)。然后把所有的紅顏料和綠顏料混在一起放在一個大缸里,這樣就產生了黃色。

現在我們嘗試用海龜畫一個黃色的圓,我們要用100%的紅色和綠色顏料,不能使用藍色:

效果如下:

>>> t.color(1,1,0)  ##100%的紅色,100%的綠色,0%的藍色
>>> t.begin_fill()  ##給后面的形狀填色
>>> t.circle(50)
>>> t.end_fill()    ##用RGB顏色來給圓填色
黃色的圓

 

 

1,用來畫填色圓形的函數

為了更容易地用不同的顏色來試驗,我們來把畫圓填色的代碼寫成一個函數:

>>> def mycircle(red,green,blue):
    t.color(red,green,blue)
    t.begin_fill()
    t.circle(50)
    t.end_fill()

 

我們可以只用綠色來畫一個很亮的綠色的圓,如圖A:

>>> mycircle(0,1,0)

 

也可以用一半的綠色(0.5)來畫一個深綠色的圓,如圖B:

>>> mycircle(0,0.5,0)

 

A:                           B:

 

2,使用純白和純黑

當天空沒有了太陽,世界就變得一切黑暗(假設我們那時候還沒有發明燈)。類比,如果讓三種顏色都設置為0,就相當於沒有光,這時候畫出來的圖形都是黑色的;反之為1全為白。

>>> mycircle(0,0,0)

 

五、畫正方形的函數

>>> def mysquare(size):
    for x in range(1,5):
        t.forward(size)
        t.left(90)

 

>>> mysquare(25)
>>> mysquare(50)
>>> mysquare(75)
>>> mysquare(100)
>>> mysquare(125)

 

效果如下:

 

六、畫填色正方形

要對正方形填色,首先要重置畫布,開始填色,然后在調用正方形函數,過程如下:

>>> t.reset()
>>> t.begin_fill()
>>> mysquare(50)
>>> t.end_fill()   ##加入這行代碼前,你應當看到一個空的正方形,直到你結束填充

 

效果如下:

 

我們現在可以改變下這個函數,讓它既可以畫填好的正方形也可以畫不填色的正方形。

>>> def mysquare(size,filled):
    if filled == True:
        t.begin_fill()
        for x in range(1,5):
            t.forward(size)
            t.left(90)
        if filled == True:
            t.end_fill()

 

下面我們可以畫一個填了色的正方形:

>>> mysquare(50,True)

 

接着畫一個沒有填色的正方形:

>>> mysquare(150,False)

 

 

七、畫填好色的星星

現在我們要寫一個mystar函數

>>> def mystar(size,filled):
    if filled == True:    ##檢查filled是否為真
        t.begin_fill()  ##如果是的話開始填充
    for x in range(1,19):
        t.forward(size)
        if x % 2 == 0:
            t.left(175)
        else:
            t.left(225)
        if filled == True:
            t.end_fill()
mystar函數

 

現在我們可以畫一個金色(90%紅色,75%綠色,0%的藍色)的星星

>>> t.color(0.9,0.75,0)
>>> mystar(120,True)

 

效果如下:

 

要給星星畫上輪廓,把顏色改成黑色並且不用填色再畫一遍星星:

>>> t.color(0,0,0)
>>> mystar(120,False)

 

效果如下:

 

總結

今天下午收獲頗豐,忘記了吃飯,忘記了打游戲,一直在學習Python作圖。學會了如何用turtle模塊畫幾個基本的幾何圖形,還有用for循環和if語句來控制海龜在屏幕上的動作。同時可以改變海龜的筆的顏色並給它所畫的形狀填色。還用了一些函數(比如 def 函數)來重用繪圖的代碼,提高了效率。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM