亚洲全黄无码一级在线看_国产剧情久久久性色_无码av一区二区三区无码_亚洲成a×人片在线观看

當前位置: 首頁 > 科技新聞 >

如何用Python畫一只機器貓?

時間:2020-04-11 16:14來源:網(wǎng)絡整理 瀏覽:
自信心是成功的源泉,對剛?cè)腴T編程行業(yè)的初級程序員來說,多敲代碼多做項目就是構建自信心的最好辦法。 第一次學編程是在屏幕上敲出”Hello W

自信心是成功的源泉,對剛?cè)腴T編程行業(yè)的初級程序員來說,多敲代碼多做項目就是構建自信心的最好辦法。

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

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

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


01

程序分析


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

如何用Python畫一只機器貓?

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


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


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


02

導入模塊和設置畫筆


因為要使用海龜繪圖,所以我們需要先導入 turtle 模塊。我們將采用第 11 章介紹的導入模塊的第二種方法:

fromturtleimport*


使用這種方法,可以導入 turtle 模塊中所有的方法和變量,然后就可以直接調(diào)用方法了,而不需要再添加 “turtle.”前綴?,F(xiàn)在,我們可以直接將代碼寫為 setup(500,500),而不需要再添加前綴寫成 turtle.setup(500,500)。


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


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


調(diào)用 setup(500,500),將畫布大小設置為 500 像素寬,500 像素高。調(diào)用 speed(10) 將畫筆速度設置為 10。

調(diào)用 shape("turtle"),將光標設置為小海龜。調(diào)用 colormode(255)設置 RGB 色彩值范圍為 0~255。


03

基礎函數(shù)


繪制圓形


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

defdrawRound(size,filled):
pendown()
iffilled==True:
begin_fill()
setheading(180)
circle(size,360)
iffilled==True:
end_fill()


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


繪制矩形


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

defdrawRect(length,width,filled):
setheading(0)
pendown()
iffilled==True:
begin_fill()
forward(length)
right(90)
forward(width)
right(90)
forward(length)
right(90)
forward(width)
iffilled==True:
end_fill()


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


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


04

繪制機器貓的身體

head()函數(shù)


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

defhead():
#大圓
color("blue","blue")
penup()
goto(0,100)
drawRound(75,True)
#小圓
color("white","white")
penup()
goto(0,72)
drawRound(60,True)


首先調(diào)用 color()函數(shù),將畫筆的顏色設置為藍色,將填充的顏色也設置為藍色。然后調(diào)用 penup()函數(shù), 讓畫筆抬起,不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐標為 0、y 坐標為 100 的位置。調(diào)用我們在前面創(chuàng)建的自定義函數(shù) drawRound(),繪制一個半徑為 75 個像素、用藍色填充的圓。


然后再次調(diào)用 color()函數(shù),將畫筆的顏色設置為白色,將填充的顏色也設置為白色。然后調(diào)用 penup()函 數(shù),讓畫筆抬起,不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐標為 0、y 坐標為 72 的位置。調(diào)用 drawRound()函數(shù),繪制一個半徑為 60 個像素、用白色填充的圓。調(diào)用這個 head()函數(shù)來看一下執(zhí)行效果,如圖所示。

如何用Python畫一只機器貓?


eyes()函數(shù)


接下來,我們定義 eyes()函數(shù),用來繪制機器貓的眼睛。首先,我們繪制兩個邊框為黑色并用白色填充的 大圓,表示機器貓的兩只眼睛。然后在每個大圓中畫一個用黑色填充的圓,并且在這個黑圓中再繪制一

個更小的用白色填充的圓,它們表示機器貓的眼球。

defeyes():
#左眼眶
color("black","white")
penup()
goto(-15,80)
drawRound(17,True)
#右眼眶
color("black","white")
penup()
goto(19,80)
drawRound(17,True)
#左眼珠
color("black","black")
penup()
goto(-8,70)
drawRound(6,True)
color("white","white")
penup()
goto(-8,66)
drawRound(2,True)
#右眼珠
color("black","black")
penup()
goto(12,70)
drawRound(6,True)
color("white","white")
penup()
goto(12,66)
drawRound(2,True)


首先繪制機器貓的左眼眶。調(diào)用 color()函數(shù),將畫筆的顏色設置為黑色,將填充的顏色設置為白色。然 后調(diào)用 penup()函數(shù),讓畫筆抬起,不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐標為 ?15、y 坐標為 80 的位置。調(diào)用自定義函數(shù) drawRound(),繪制一個半徑為 17 個像素、用白色填充的圓。


然后繪制右眼眶,這段代碼和繪制左眼的代碼基本一致,只是傳入 goto()函數(shù)的參數(shù)不一樣,要將畫筆移 動到 x 坐標為 19、y 坐標為 80 的位置。接下來繪制左眼珠和右眼珠。還是調(diào)用 color()函數(shù),設置畫筆和填充的顏色,移動畫筆,然后繪制圓。調(diào)用這個 eyes()函數(shù)來看一下效果,如圖所示。

如何用Python畫一只機器貓?

nose()函數(shù) 接下來,我們定義 nose()函數(shù),來繪制鼻子。鼻子很簡單,就是一個紅色的圓。nose 函數(shù)的代碼如下所示。

defnose():
color("red","red")
penup()
goto(0,40)
drawRound(7,True)


調(diào)用 color 函數(shù),將畫筆和填充的顏色設置為紅色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在畫布

上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐標為 0、y 坐標為 40 的位置。調(diào)用自定義函數(shù) drawRound(),繪制一個半徑為 7 個像素、用紅色填充的圓。調(diào)用這個 nose()函數(shù)來看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


mouth()函數(shù)


接下來,我們定義一個 mouth()函數(shù),用來繪制機器貓的嘴巴。它會先繪制一條弧線,表示嘴形,然后再 繪制一條豎線,表示機器貓的“人中”。

defmouth():
#嘴
color("black","black")
penup()
goto(-30,-20)
pendown()
setheading(-27)
circle(70,55)
#人中
penup()
goto(0,26)
pendown()
goto(0,-25)


調(diào)用 color 函數(shù),將畫筆和填充的顏色都設置為黑色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在畫 布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐標為?30、y 坐標為?20 的位置。然后調(diào)用 pendown()函數(shù)落下畫筆。調(diào)用 setheading(-27),設置小海龜啟動時運動的方向。調(diào)用 circle(70,55)繪制一 條弧線,表示機器貓的嘴巴。


接下來,調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐 標 0、y 坐標為 26 的位置。然后調(diào)用 pendown()函數(shù)落下畫筆。調(diào)用 goto(0,-25),來繪制一條直線,表示 機器貓的“人中”。調(diào)用這個 mouth()函數(shù)來看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


whiskers()函數(shù)


接下來,我們定義了一個 whiskers()函數(shù),用來繪制胡子。它在機器貓的“人中”的兩邊,分別繪制 3 條 直線,表示胡須。whiskers()函數(shù)的代碼如下所示。

defwhiskers():
color("black","black")
#左邊中間的胡子
penup()
goto(10,5)
pendown()
goto(-40,5)
#右邊中間的胡子
penup()
goto(10,5)
pendown()
goto(40,5)
#左上的胡子
penup()
goto(-10,15)
pendown()
goto(-40,20)
#右上的胡子
penup()
goto(10,15)
pendown()
goto(40,20)
#左下的胡子
penup()
goto(-10,-5)
pendown()
goto(-40,-10)
#右下的胡子
penup()
goto(10,-5)
pendown()
goto(40,-10)


還是先調(diào)用 color()函數(shù),將畫筆和填充的顏色都設置為黑色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到指定位置。然后調(diào)用 pendown()函數(shù)落下畫筆。調(diào)用goto()函數(shù),繪制一條直線,表示左邊第一根胡子。然后重復類似的動作,繪制剩下的 5 根胡子。這部分的代碼基本上是相同的,只是移動到的坐標位置有 所不同,這里就不再贅述。調(diào)用 whiskers()函數(shù)來看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


body()函數(shù)


下面我們定義 body()函數(shù),它用來繪制機器貓的身體。該函數(shù)先繪制一個藍色的矩形表示身體,然后再 繪制一個白色的圓,表示機器貓的大肚子。接下來,繪制一個紅色的長方形,表示紅絲帶,用于分隔開 腦袋和身體。最后,繪制一個半圓,表示機器貓的腿。body()函數(shù)的代碼如下所示。

defbody():
#藍色的身體
color("blue","blue")
penup()
goto(-50,-40)
drawRect(100,80,True)
#白色的大肚子
color("white","white")
penup()
goto(0,-30)
drawRound(40,True)
#紅色絲帶
color("red","red")
penup()
goto(-60,-35)
drawRect(120,10,True)
#白色的腿
color("white","white")
penup()
goto(15,-127)
pendown()
setheading(90)
begin_fill()
circle(14,180)
end_fill()


先調(diào)用 color()函數(shù),將畫筆和填充的顏色都設置為藍色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在 畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到指定位置。然后調(diào)用自定義函數(shù) drawRect(),繪制一個長 為 100 像素、寬為 80 像素,用藍色填充的矩形,表示機器貓的身體。


然后調(diào)用 color()函數(shù),將畫筆和填充的顏色都設置為白色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要 在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到指定位置。然后調(diào)用自定義函數(shù) drawRound(),繪制一 個半徑為 40 像素、用白色填充的圓形,表示機器貓的大肚子。


接下來,再次調(diào)用 color()函數(shù),將畫筆和填充的顏色都設置為紅色。然后調(diào)用 penup()函數(shù),讓畫筆抬起, 先不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到指定位置。然后調(diào)用自定義函數(shù) drawRect(),繪 制一個長為 120 像素、寬為 10 像素,用紅色填充的扁扁的矩形,用來分隔開機器人的身體和腦袋。這是 機器人的紅絲帶,也是掛鈴鐺的地方。


然后調(diào)用 color()函數(shù),將畫筆和填充的顏色都設置為白色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要 在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到指定位置。調(diào)用 pendown()函數(shù)落下畫筆。調(diào)用 setheading(90),設置小海龜啟動時運動的方向,也就是讓小海龜旋轉(zhuǎn) 90 度。調(diào)用 begin_fill()函數(shù),開始 填充。調(diào)用 circle(14,180),繪制一個半徑為 14 像素的半圓形。然后調(diào)用 end_fill()函數(shù),停止填充。這樣 就繪制完了機器貓的兩條腿。

調(diào)用這個函數(shù),看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


feet()函數(shù)


接下來,我們定義 feet()函數(shù),用來繪制機器貓的腳。feet()函數(shù)的代碼如下所示。

deffeet():
#左腳
color("black","white")
penup()
goto(-30,-110)
drawRound(20,True)
#右腳
color("black","white")
penup()
goto(30,-110)
drawRound(20,True


調(diào)用 color()函數(shù),將畫筆顏色設置為黑色,將填充顏色設置為白色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在畫布上留下筆跡。調(diào)用 goto()函數(shù)將畫筆移動到 x 坐標為?30、y 坐標為?110 的位置。


然后調(diào)用自定義函數(shù) drawRound(),繪制一個半徑為 20 像素、用白色填充的圓形,表示機器貓的左腳。然后重復類似的動作,繪制機器貓的右腳。代碼基本上是相同的,只是移動的坐標有所不同,這里就不 再贅述。調(diào)用 feet()函數(shù),看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


arms()函數(shù)


接下來,我們定義 arms()函數(shù),用來繪制機器貓的胳膊。這里用兩個四邊形表示機器貓的兩條胳膊。arms()函數(shù)的代碼如下所示。

defarms():
#左胳膊
color("blue","blue")
penup()
begin_fill()
goto(-51,-50)
pendown()
goto(-51,-75)
left(70)
goto(-76,-85)
left(70)
goto(-86,-70)
left(70)
goto(-51,-50)
end_fill()
#右胳膊
color("blue","blue")
penup()
begin_fill()
goto(49,-50)
pendown()
goto(49,-75)
left(70)
goto(74,-85)
left(70)
goto(84,-70)
left(70)
goto(49,-50)
end_fill()


調(diào)用 color()函數(shù),將畫筆顏色和填充顏色都設置為藍色。然后調(diào)用 penup()函數(shù),讓畫筆抬起,先不要在 畫布上留下筆跡。調(diào)用 begin_fill()函數(shù)表示開始填充。調(diào)用 goto()函數(shù)將畫筆移動到指定位置。然后調(diào)用 pendown()函數(shù)落下畫筆。調(diào)用 goto()函數(shù),繪制一條直線。然后調(diào)用函數(shù) left(70),表示向左旋轉(zhuǎn) 70 度。調(diào)用 goto()函數(shù),繪制第二條直線。然后調(diào)用函數(shù) left(70),表示向左旋轉(zhuǎn) 70 度。調(diào)用 goto()函數(shù),繪制第三條直線。然后調(diào)用函數(shù) left(70),表示再次向左旋轉(zhuǎn) 70 度。調(diào)用 goto()函數(shù),繪制第四條直線。調(diào)用 end_fill()函數(shù),完成顏色的填充。這樣我們就完成了一個用藍色填充的四邊形,用它來表示機器貓的左胳膊。


然后重復類似的動作,繪制右胳膊。代碼基本相同,只是移動的坐標位置有所不同,這里不再贅述。調(diào) 用一下 arms()函數(shù),看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


hands()函數(shù)


接下來,我們定義了 hands()函數(shù),來繪制機器貓的手。這里用兩個白色填充的圓來表示機器貓的手。hands()函數(shù)的代碼和 feet()函數(shù)比較類似,這里不再做過多的解釋,直接列出了代碼。

defhands():
#左手
color("black","white")
penup()
goto(-90,-71)
drawRound(15,True)
#右手
color("black","white")
penup()
goto(90,-71)
drawRound(15,True)

調(diào)用 hands()函數(shù),看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?


bell()函數(shù)


接下來,我們定義了一個 bell()函數(shù),來繪制鈴鐺。可以看到,鈴鐺是在一個黃色圓上,由中間的兩條黑 線和下方的一個小黑圈組成的。所以,我們先繪制一個用黃色填充的圓;然后繪制一個沒有填充的矩形, 表示鈴鐺中間分開上下部分的橫條。在矩形下面,再繪制一個黑色填充的圓。bell()函數(shù)代碼比較簡單, 這里也不再過多地解釋,直接列出代碼。

defbell():
#黃色實心圓表示銅鈴
color("yellow","yellow")
penup()
goto(0,-41)
drawRound(8,True)
#黑色矩形表示花紋
color("black","black")
penup()
goto(-10,-47)
drawRect(20,4,False)
#黑色實心圓表示撞擊的金屬丸
color("black","black")
penup()
goto(0,-53)
drawRound(2,True)


調(diào)用這個函數(shù),看一下其繪制效果,如圖所示。

如何用Python畫一只機器貓?


package()函數(shù)


最后,我們還要給機器貓繪制一個口袋,因此,這里定義一個 package()函數(shù)來繪制口袋。這里用一個半 圓來表示機器貓的口袋。package()函數(shù)的代碼比較簡單,這里不再解釋,直接列出了代碼。

defpackage():
#半圓
color("black","black")
penup()
goto(-25,-70)
pendown()
setheading(-90)
circle(25,180)
goto(-25,-70)
hideturtle()

調(diào)用這個函數(shù),看一下繪制效果,如圖所示。

如何用Python畫一只機器貓?

到這里,我們的機器貓就繪制完成了。和前面給出的機器貓的卡通形象對比一下,看看是不是挺像的呢?

推薦內(nèi)容