1. 程式人生 > >Python蟒蛇繪製例項

Python蟒蛇繪製例項

 

 Python蟒蛇繪製例項

 

import turtle #引入turtle外部庫,turtle是python中一個繪製圖像的外部庫

 


def drawSnake(rad,angle,len,neckrad):#def定義函式,未經呼叫不能執行
    for i in range (len):
        turtle.circle(rad,angle)#軌跡為圓形,rad為半徑(正代表圓心在左),angle為弧度值
        turtle.circle(-rad,angle)
    turtle.circle(rad,angle/2)
    turtle.fd(rad)#直線軌跡
    turtle.circle(neckrad+1,180)
    turtle.fd(rad*2/3)
def main():#def定義函式
    turtle.setup(1300,800,0,0)#啟動一個圖形視窗(寬度,高度,視窗左上角在螢幕中的座標位置)
    pythonsize = 30#軌跡寬度
    turtle.pensize(pythonsize)
    turtle.pencolor("blue")#軌跡顏色
    turtle.seth(-40)#軌跡的角度,逆為正
    drawSnake(40,80,5,pythonsize/2)

 

 

 

 

main()#第一條執行語句

 

 

 

 

本文主要研究的是Python程式設計turtle的例項,繪製一個七彩蟒蛇。。具體如下。

第2周的課後練習裡,有一道題目,要求修改“蟒蛇繪製”程式,對Python 蟒蛇的每個部分採用不同顏色,繪製一條彩色蟒蛇。

原蟒蛇繪製程式如下:

因為剛開始學Python,不太熟悉,所以自己加了一些註釋,方便理解。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

#蟒蛇繪製

import turtle

 

def drawSnake(rad,angle,len,neckrad):

  for i in range(len):

    turtle.circle(rad,angle) #畫圓 rad:圓半徑 angle:圓弧度

    turtle.circle(-rad,angle) #執行軌跡右側rad遠的地方繪製圓

  turtle.circle(rad,angle/2)

  

turtle.fd(rad) #表示直線爬行,forward,引數表示爬行的距離

  turtle.circle(neckrad+1,180)

  turtle.fd(rad*2/3)

 

def main():

  turtle.setup(1300,800,0,0) #設定視窗寬+高+起始位置

  pythonsize = 30

  turtle.pensize(pythonsize) #設定筆的寬度

  turtle.pencolor("blue") #設定筆的顏色

  turtle.seth(-40) #設定筆的起始角度

  drawSnake(40,80,5,pythonsize/2)

通過仔細分析了該程式碼,發現這段程式碼中畫筆的顏色,是通過pencolor()來設定,如果想要將顏色變為彩色,顯然不能再用這種方法,因此我想到了用列表來解決這個問題,於是在drawSnake裡建立一個名為colors的列表變數並且在列表中放置6種顏色,如下所示:

colors = [“red”,”orange”,”yellow”,”green”,”cyan”,”blue”]

在此之前呢,因為原先的程式裡,len的值是5,因此畫出來的蟒蛇的身體只有五部分,為了顯示為七彩,特地將len的值改為6.

在for迴圈裡,在繪畫之前,增加了一條語句,用來設定畫筆的顏色:

turtle.color(colors[i])

colors[i]中,i和for迴圈裡的是同一個變數,當i從0變化到5,相應的,color()就會從前面所新增的、名為colors的顏色名稱列表中選取一種顏色,設定為畫筆的顏色。

而蟒蛇的頭部,則利用turtle.color(“purple”)設定為第7種顏色。

執行之後,我發現turtle每次繪圖,都是從畫板的中心開始的,我覺得不太好看,於是想找到一種方法能夠改變繪圖的起點,目前我找到的方法是,利用penup(),goto(),pendown()命令來改變畫筆起點的位置,如下所示:

turtle.penup()
turtle.goto(-350,0)
turtle.pendown()

如果後續再發現更好的方法,再更新。

一條七彩的蟒蛇就繪製好啦~

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

#蟒蛇繪製

import turtle

 

def drawSnake(rad,angle,len,neckrad):

 

  colors = ["red","orange","yellow","green","cyan","blue"]

  for i in range(len):

    turtle.color(colors[i])

    turtle.circle(rad,angle)

    turtle.circle(-rad,angle)

 

  turtle.color("purple")

  turtle.circle(rad,angle/2)

  turtle.fd(rad)

  turtle.circle(neckrad+1,180)

  turtle.fd(rad*2/3)

 

def main():

  turtle.setup(1300,800,0,0)

  turtle.penup()

  turtle.goto(-350,0)

  turtle.pendown()

  pythonsize = 30

  turtle.pensize(pythonsize)

  turtle.seth(-40)

  drawSnake(40,80,6,pythonsize/2)

 

main()

結果展示: