天天看點

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

作者 | 人郵異步社群

責編 | 胡巍巍

出品 | CSDN部落格

自信心是成功的源泉,對剛入門程式設計行業的初級程式員來說,多敲代碼多做項目就是建構自信心的最好辦法。

第一次學程式設計是在螢幕上敲出”Hello World!“,慢慢地可以處理簡單程式,顯示更複雜的圖像,解決更多的問題。

信心增加又可以促進自己學習更多的知識,這樣正能量的方式就是程式員學習進階的不二法寶。

今天就教大家用Python寫一個機器貓,跟着異步君一起敲代碼吧!

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

程式分析

我們先來看一下機器貓的樣子,如圖所示。

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

它有大大的腦袋、圓圓的眼睛、紅紅的鼻頭,嘴巴兩邊各有 3 根胡子。腦袋和身體用一條紅色的絲帶分 隔開,因為圖中的這隻機器貓是坐着的,是以我們沒有看到腿,隻有圓圓的腳露在外面。此外,機器貓還有胳膊和圓圓的手。最後,别忘了機器貓還有标志性的鈴铛和口袋。

我們可以使用自定義函數,按照機器貓的身體部位來定義各個繪制函數:head(頭)、 eyes(眼睛)、nose(鼻子)、mouth(嘴)、whiskers(胡子)、body(身體)、feet(腳)、arms(胳 膊)、hands(手)、bell(鈴铛)和 package(口袋)。函數的名字就表明了該函數負責繪制的身體部位。

我們可以看到,這些身體部位大部分是由圓形和矩形組成,是以為了能夠重複使用相同的代碼段,避免 不必要地複制和粘貼代碼,我們還需要定義兩個基礎函數——一個是繪制圓形的函數 drawRound,一個是繪制矩形的 drawRect函數。

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

導入子產品和設定畫筆

因為要使用海龜繪圖,是以我們需要先導入 turtle 子產品。我們将采用第 11 章介紹的導入子產品的第二種方法:

from turtle import * 
           

使用這種方法,可以導入 turtle 子產品中所有的方法和變量,然後就可以直接調用方法了,而不需要再添加 “turtle.”字首。現在,我們可以直接将代碼寫為 setup(500,500),而不需要再添加字首寫成 turtle.setup(500,500)。

然後我們對畫筆做一些基本設定,代碼如下。

#設定視窗大小 
setup(500,500)
#設定畫筆
speed(10)
shape("turtle")
colormode(255)
           

調用 setup(500,500),将畫布大小設定為 500 像素寬,500 像素高。調用 speed(10) 将畫筆速度設定為 10。

調用 shape("turtle"),将光标設定為小海龜。調用 colormode(255)設定 RGB 色彩值範圍為 0~255。

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

基礎函數

繪制圓形

我們定義一個 drawRound函數,用它來繪制圓形。這裡為它設定兩個參數,分别是表示所繪制的圓的半 徑的 size 和表示是否填充的 filled。drawRound函數的代碼如下所示。

def drawRound(size,filled):
pendown
if filled==True:
begin_fill
setheading (180)
circle(size,360)
if filled==True:
end_fill
           

首先,調用 pendown函數表示落筆。然後,判斷參數 filled 是否等于 True。如果等于 True,表示要填充, 那麼就調用 begin_fill函數;否則,不調用該函數,表示沒有填充。然後調用 setheading(180),設定小海 龜啟動時運動的方向,就是讓小海龜調個頭。調用 circle(size,360),畫一個半徑為 size 的圓。然後還要判斷參數 filled 是否等于 True,如果等于 True,意味着前面調用過 begin_fill函數,則這裡調用 end_fill函 數表示填充完畢。

繪制矩形

接下來,我們定義了一個 drawRect函數,用它來繪制矩形。這裡為它指定 3 個參數,分别是表示所繪制 的矩形的長的 length,表示所繪制的矩形的寬的 width,以及表示是否填充的 filled。drawRect函數的代 碼如下所示。

def drawRect(length,width,filled):
setheading(0)
pendown
if filled==True:
begin_fill
forward(length)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
if filled==True:
end_fill
           

首先調用 setheading(0),設定小海龜啟動時運動的方向,就是讓小海龜頭朝右。然後調用 pendown函數, 表示落筆。判斷參數 filled 是否等于 True。如果等于 True,表示要填充,就調用 begin_fill函數;否則, 不調用函數,表示沒有填充。調用 forward(length),繪制一條邊。然後調用 right(90),讓光标向右旋轉 90 度。調用 forward(width),繪制另一條邊。

調用 right(90),讓光标向右旋轉 90 度。調用 forward(length),繪制第三條邊。調用 right(90),讓光标向右旋轉 90 度。調用 forward(width),繪制第四 條邊。然後還要判斷參數 filled 是否等于 True,如果等于,則調用 end_fill函數表示填充完畢。

python畫圓形螺旋線_如何用Python畫一隻機器貓?| 原力計劃

繪制機器貓的身體

head函數

在這裡,我們定義了一個繪制機器貓大腦袋的函數——head。首先,它繪制一個藍色填充的大圓,表示 機器貓的腦袋。然後,在藍色圓中繪制一個稍小一點的白色填充的圓,表示機器貓的臉龐。head函數的 代碼如下所示。

def head:
#大圓
color("blue
           

繼續閱讀