turtle海龜繪圖庫
相關資料來自百度百科,以及MOOC教程。
turtle(海龜)是Python重要的標準庫之一,
它能夠進行基本的圖形繪製。
turtle圖形繪製的概念誕生於1969年,
成功應用於LOGO編程語言。
turtle庫繪製圖形有一個基本框架:
一個畫筆在座標系中移動,其運動軌跡形成了繪製圖形。
剛開始繪製時,畫筆位於畫布正中央,此處座標爲(0,0),前進方向爲水平向右。
另外,turtle庫使用RGB色彩模式。
turtle的繪圖窗體
利用setup()來設置。
# setup各項參數
turtle.setup(width, height, startx, starty)
- setup()設置窗體大小及位置
- 4個參數中後兩個可選
- setup()不是必須的
空間座標體系
>>>>>>>>>畫筆位於正中間(0,0)的位置。<<<<<<<<<<<<<
import 庫引用
首先學了個實例,繪製小蛇。其中第一行。便是import的使用。
什麼是import呢?
而import的用法也是很多。
教學實例是小蛇的繪製。
這裏先把畫小蛇的三種使用import的方法寫出來:
第一種
import turtle
turtle.setup(650, 350, 200, 200)
turtle.penup()
turtle.fd(-250)
turtle.pendown()
turtle.pensize(25)
turtle.pencolor("purple")
turtle.seth(-40)
for i in range(4):
turtle.circle(40, 80)
turtle.circle(-40, 80)
turtle.circle(40, 80/2)
turtle.fd(40)
turtle.circle(16, 180)
turtle.fd(40 * 2/3)
turtle.done()
第二種
from turtle import *
setup(650, 350, 200, 200)
penup() fd(-250)
pendown()
pensize(25)
pencolor("purple")
seth(-40)
for i in range(4):
circle(40, 80)
circle(-40, 80)
circle(40, 80/2)
fd(40)
circle(16, 180)
fd(40 * 2/3)
done()
第三種
import turtle as t
t.setup(650, 350, 200, 200)
t.penup() t.fd(-250)
t.pendown()
t.pensize(25)
t.pencolor("purple")
t.seth(-40)
for i in range(4):
t.circle(40, 80)
t.circle(-40, 80)
t.circle(40, 80/2)
t.fd(40)
t.circle(16, 180)
t.fd(40 * 2/3)
t.done()
經過觀察發現第二種好像更簡便,
實則第二種限制會比較多,
只能用單個庫裏面的函數。
不過也可以作爲一種借鑑。
所以使用第三種代碼更好一點。
那麼每行的作用是什麼呢。
turtle庫的函數
畫筆控制函數
畫筆擡起和落下
畫筆操作後一直有效,一般成對出現
turtle.penup()
也可以寫 turtle.pu()
擡起畫筆
turtle.pendown()
也可以寫 turtle.pd()
落下畫筆
畫筆的移動和變向
畫筆的移動:
①直線移動
turtle.forward(d)
也可以寫turtle.fd(d)
向前移動,畫筆走直線
d: 行進距離,可以爲負數
②曲線移動
turtle.circle
(r, extent=None)
根據半徑r繪製extent角度的弧形
r: 默認圓心在海龜左側r距離的位置 extent:
繪製角度,默認是360度整圓
畫筆的方向:
①絕對角度
turtle.setheading(angle)
也可以寫turtle.seth(angle)
改變移動方向,畫筆旋轉一定角度
angle: 行進方向的絕對角度(x軸y軸水平座標體系)
②相對角度
turtle.left(angle)
畫筆向左轉
turtle.right(angle)
畫筆向右轉
angle: 在海龜當前行進方向上旋轉的角度
畫筆顏色和大小
畫筆設置後一直有效,直至下次重新設置
畫筆寬度:turtle.pensize(width) 也可以寫 turtle.width(width)
畫筆顏色:turtle.pencolor(color) color爲顏色字符串或r,g,b值
》》》》這裏畫筆的顏色color可以有三種形式。《《《《
循環語句
代碼中另外一個要點就是循環語句的實現。
range()
函數
產生循環計數序列
range(N)
產生 0 到 N-1的整數序列,共N個
range(M,N)
產生 M 到 N-1的整數序列,共N-M個
代碼嘗試
最後,我自己嘗試寫了個痛恨 喜愛的釘釘繪製
orz有點草陋。先放上預覽圖:
代碼如下:
from turtle import*
def Goto(x,y):
penup()
goto(x,y)
pendown()
ht()
speed(0)
colormode(255)
bgcolor(0,120,215)
screensize(250,250)
setup(250,250)
Goto(0,-70)
pencolor(46,160,240)
fillcolor(46,160,240)
begin_fill()
circle(70,360)
end_fill()
Goto(10,-53)
fillcolor(255,255,255)
pencolor(255,255,255)
begin_fill()
seth(50)
fd(36)
seth(180)
fd(11)
seth(60)
fd(39)
seth(154)
fd(87)
seth(270)
fd(21)
seth(-24)
fd(38)
seth(172)
fd(30)
seth(-49)
fd(18)
seth(0)
fd(25)
seth(192)
fd(21)
seth(-39)
fd(20)
seth(10)
fd(14)
seth(-110)
fd(18)
seth(0)
fd(10)
seth(251)
fd(22)
end_fill()
done()