Turtle庫也叫海龜庫, 是Python重要的標准庫之一, 能夠進行基本的圖形繪制。Turtle庫在繪制圖形時的基本框架: 一個小海龜在坐標系中爬行,其爬行軌跡形成了繪制圖形。剛開始繪制時,小海龜位於畫布正中央,此處坐標為(0,0),前進方向為水平右方。
Turtle庫的基本函數
turtle.setup(a,b,c,d) |
|
turtle.fd(x) | 順着畫筆當前方向前進x(正負) |
turtle.bk(x) | 畫筆移動到(a,b),當前方向不變 |
turtle.goto(a,b) | 畫筆移動到(a,b),當前方向不變 |
turtle.circle(r,angle) | 畫筆以r為半徑,逆時針旋轉angle(正負)度 |
turtle.setth(angle)(絕對角度) | 改變當前畫筆的方向,但不行進 |
turtle.left(angle)(海龜角度) | 當前畫筆方向左轉angle度 |
turtle.right(angle)(海龜角度) | 當前畫筆方向右轉angle度 |
turtle.colormode(mode) | 1.0RGB小數模式(一般); 255RGB整數值模式 |
turtle.penup() | 畫筆抬起 |
turtle.pendown() | 畫筆放下 |
turtle.pensize(a) | 設置畫筆大小為a像素 |
turtle.pencolor(“red”) | 設置畫筆顏色為紅色( 其他 ) |
turtle.begin_fill() | 准備開始填充圖形 |
turtle.end_fill() | 填充完成 |
turtle.fillcolor(顏色字符串) | 繪制圖形的填充顏色 |
turtle.hideturtle() | 隱藏箭頭顯示 |
turtle.showturtle() | 顯示箭頭 |
turtle.done() | 畫圖結束 |
畫筆顏色可以用多種形式表示:
顏色字符串:turtle.pencolor("purple")
RGB的小數值:turtle.pencolor(0.63, 0.13, 0.94)
RGB的整數值:turtle.pencolor(160, 32, 240)
RGB的元組值:turtle.pencolor((0.63, 0.13, 0.94))
常用RGB顏色
中文名稱 | 字符串 | RGB整數值 | RGB小數值 |
白色 | white | 255, 255, 255 | 1, 1, 1 |
黃色 | yellow | 255, 255, 0 | 1, 1, 0 |
洋紅 | magenta | 255, 0, 255 | 1, 0, 1 |
青色 | cyan | 0, 255, 255 | 0, 1, 1 |
藍色 | blue | 0, 0, 255 | 0, 0, 1 |
黑色 | black | 0, 0, 1 | 0, 0, 0 |
海貝色 | seashell | 255, 245, 238 | 1, 0.96, 0.93 |
金色 | gold | 255, 215, 0 | 1, 0.84, 0 |
粉紅色 | pink | 255, 192, 203 | 1, 0.75, 0.80 |
棕色 | brown | 165, 42, 42 | 0.65, 0.16, 0.16 |
紫色 | purple | 160, 32, 240 | 0.63, 0.13, 0.94 |
番茄色 | tomato | 255, 99, 71 | 1, 0.39, 0.28 |
繪圖實例
等邊疊加三角形
1 import turtle as t 2 3 def drawTriangle(angle, long): 4 for i in range(3): 5 t.fd(long) 6 t.left(angle) 7 8 if __name__ == "__main__": 9 t.pensize(3) 10 t.seth(-120) 11 drawTriangle(120, 100) 12 for i in range(2): 13 t.fd(200) 14 t.left(120) 15 t.fd(100) 16 t.left(120) 17 t.fd(100) 18 t.right(120) 19 t.fd(100) 20 t.hideturtle() 21 t.done()
六角形
import turtle as t def drawSixangle(angle, long): for i in range(5): t.fd(long) t.right(angle) def drawTriangle(angle1, angle2, long): for i in range(6): t.fd(long) t.right(angle1) t.fd(long) t.left(angle2) if __name__ == "__main__": t.pensize(2) t.seth(30) drawSixangle(60, 100) t.fd(100) drawTriangle(120, 60, 100) t.done()
五角星
1 import turtle as t 2 3 def main(long, angle): 4 for i in range(5): 5 t.fd(long) 6 t.right(angle) 7 8 if __name__ == "__main__": 9 t.begin_fill() 10 t.fillcolor('red') 11 t.pensize(1) 12 main(100, 144) 13 t.end_fill() 14 t.hideturtle() 15 t.done()
聖誕樹
1 n = 50 2 from turtle import * 3 speed("fastest") 4 left(90) 5 fd(3*n) 6 pencolor("dark green") 7 bk(n*4.8) 8 def tree(d, s): 9 if d <= 0: 10 return 11 fd(s) 12 tree(d-1, s*.8) 13 right(120) 14 tree(d-3, s*.5) 15 right(120) 16 tree(d-3, s*.5) 17 right(120) 18 bk(s) 19 tree(15, n) 20 bk(n/2) 21 done()