1. 程式人生 > 實用技巧 >寫一個你自己的turtle 庫的學習筆記。

寫一個你自己的turtle 庫的學習筆記。

1.turtle庫是Python語言中一個很流行的繪製圖像的函式庫,想象一個小烏龜,在一個橫軸為x、縱軸為y的座標系原點,(0,0)位置開始,它根據一組函式指令的控制,在這個平面座標系中移動,從而在它爬行的路徑上繪製了圖形。
2.在使用turtle庫前需要安裝turtle庫,在寫程式碼前需先引入turtle庫。
3.基礎概念
(1)畫布
畫布就是turtle為我們展開用於繪圖區域, 我們可以設定它的大小和初始位置。
常見的畫布方法有:setup()
turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
引數:
1)width, height: 輸入寬和高為整數時, 表示畫素; 為小數時, 表示佔據電腦螢幕的比例
2)(startx, starty): 這一座標表示 矩形視窗左上角頂點的位置, 如果為空,則視窗位於螢幕中心
如:
setup(800,800,100,100)
(2)畫筆
在畫布上,預設有一個座標原點為畫布中心的座標軸, 座標原點上有一隻面朝x軸正方向小烏龜。
這裡我們描述小烏龜時使用了兩個詞語:標原點(位置),面朝x軸正方向(方向),turtle繪圖中, 就是使用位置方向描述小烏龜(畫筆)的狀態
(1)畫筆的屬性
畫筆有顏色、畫線的寬度等屬性。
1)  turtle.pensize() :設定畫筆的寬度;
2)  turtle.pencolor() :沒有引數傳入返回當前畫筆顏色;傳入引數設定畫筆顏色,可以是字串如"green", "red",也可以是RGB 3元組。
(2)繪圖命令
操縱海龜繪圖有著許多的命令,這些命令可以劃分為3種:運動命令,畫筆控制命令和全域性控制命令
畫筆運動命令:
命令 說明
turtle.forward(distance) 向當前畫筆方向移動distance畫素長
turtle.backward(distance) 向當前畫筆相反方向移動distance畫素長度
turtle.right(degree) 順時針移動degree°
turtle.left(degree) 逆時針移動degree°
turtle.pendown() 移動時繪製圖形,預設時也為繪製
turtle.goto(x,y) 將畫筆移動到座標為x,y的位置
turtle.penup()

移動時不繪製圖形,提起筆,用於另起一個地方繪製時用

turtle.speed(speed)

畫筆繪製的速度範圍[0,10]整數

turtle.circle() 畫圓,半徑為正(負),表示圓心在畫筆的左邊(右邊)畫圓

全域性控制命令:

命令 說明
turtle.write(s[,font=("font-name",font_size,"font_type")]) 寫文字,s為文字內容,font是字型的引數,裡面分別為字型名稱,大小和型別;font為可選項, font的引數也是可選項

3.繪圖例項

import turtle
turtle.begin_fill()
turtle.fillcolor('pink')
turtle.left(30)
turtle.forward(100)
turtle.right(60)
turtle.forward(100)
turtle.right(60)
turtle.forward(100)
turtle.right(60)
turtle.forward(100)
turtle.right(60)
turtle.forward(100)
turtle.right(60)
turtle.forward(100)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.left(60)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.left(60)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.left(60)
turtle.forward(100)
turtle.right(120)
turtle.forward(100) 
turtle.left(60)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.left(60)
turtle.forward(100)
turtle.right(120)
turtle.forward(100)
turtle.end_fill()
turtle.done()