Python turtle(介绍一)
關(guān)于繪制圖形庫turtle
# 畫布上,默認(rèn)有一個坐標(biāo)原點為畫布中心的坐標(biāo)軸(0,0),默認(rèn)"standard"模式坐標(biāo)原點上有一只面朝x軸正方向小烏龜
一:海龜箭頭Turtle相關(guān)方法
#############################
# 1.繪制的運動 #
#############################
a).移動和繪制
# turtle.forward(distance) | turtle.fd(distance)
# 畫筆向繪制方向的當(dāng)前方向移動distance(integer or float)的pixels距離,
# 例如:
turtle.fd(150)
# turtle.backward(distance) | turtle.back(distance) | turtle.bk(distance)
# 畫筆向繪制方向的相反方向移動distance(integer or float)的pixels距離
# 例如:
turtle.backward(200)
# turtle.right(angle) | turtle.rt(angle)
# 繪制方向向右旋轉(zhuǎn)angle度
# 例如:
turtle.rt(45)
# turtle.left(angle) | turtle.lt(angle)
# 繪制方向向左旋轉(zhuǎn)angle度
# 例如:
turtle.lt(45)
# turtle.setpos(x, y=None) | turtle.setposition(x, y=None) | turtle.goto(x, y=None)
# 移動到絕對位置,如果畫筆按下,就畫線
# 參數(shù)x(a number or a pair/vector of numbers)
# 參數(shù)y(a number or None)
# 如果y為None,x必須是a pair of coordinates or a Vec2D
# 例如:
turtle.setpos((20,80))
turtle.setposition(120,20)
turtle.goto(60,30)
# turtle.setx(x)
# y縱向坐標(biāo)不變,更改x橫向坐標(biāo),x(integer or float)
# 例如:
turtle.setx(15)
# turtle.sety(y)
# x橫向坐標(biāo)不變,更改y縱向坐標(biāo),y(integer or float)
# 例如:
turtle.sety(15)
# turtle.seth(to_angle) | turtle.setheading(to_angle)
# 將方向設(shè)置成to_angle.to_angle(integer or float)to_angle的值在不同模式下含義如下
"standard"模式逆時針 "logo"模式順時針
0 - east 0 - north
90 - north 90 - east
180 - west 180 - south
270 - south 270 - west
如下圖"standard"模式時(默認(rèn)0時表示x方向向右即向東);"logo"模式時(默認(rèn)0時表示y方向向上即向北)
y"logo"時
^
|
|
|
(0,0)——————> x"standard"時
# 例如:
# "standard"模式時角度為逆時針,所以90度表示向北;logo"模式時角度為順時針,所以90度表示向東
turtle.setheading(90)
# turtle.home()
# 將位置和方向恢復(fù)到初始狀態(tài),位置初始坐標(biāo)為(0,0),方向初始為("standard"模式為right向右即東,"logo"模式是up向上即北)
# 例如:
turtle.home()
# turtle.circle(radius, extent=None, steps=None)
# 按給定的半徑畫圓,當(dāng)前位置為圓的初始端點
Parameters:
radius(a number,圓半徑,為正數(shù)則逆時針畫,為負(fù)數(shù)則順時針畫,方向隨著軌跡的變化而變化)
extent(a number or None,一個角度,決定哪部分圓圈被繪制,不提供extent表示畫完整的圓)
steps(an integer or None,指定半徑radius前提下,完成extent的角度時,分了幾步,如畫正5邊形時turtle.circle(40, None, 5))
# 例如:
turtle.home()
# 當(dāng)前位置(0,0)開始逆時針畫半徑為30的圓
turtle.circle(30)
# 逆時針畫半徑為50的半圓
turtle.circle(50, 180)
# 方向值為180,"standard"模式時方向向左,"logo"模式方向向下
print(turtle.heading())
turtle.circle(-50, 180)
print(turtle.heading())
# 逆時針方向半徑為40畫五邊形(5步畫接近整圓的圖形)
turtle.circle(40, None, 5)
# turtle.dot(size=None, *color)
# 按給定直徑size畫圓點(None[未提供時取pensize+4 和 2*pensize中的最大值] 或 >= 1的整數(shù)),color圓點顏色
# 例如:
turtle.home()
# 當(dāng)前畫筆大小為1
print(turtle.pensize())
# 未提供取最大直徑值為pensize+4 = 5
turtle.dot()
turtle.fd(50)
# 以直徑為5畫藍(lán)色圓點
turtle.dot(5, "blue")
turtle.fd(50)
# 以直徑為20畫紅色圓點
turtle.dot(20, "red")
turtle.fd(50)
print(turtle.position())
print(turtle.heading())
# turtle.stamp()和turtle.clearstamp(stamp_id)和turtle.clearstamps(n=None)
# turtle.stamp()是在當(dāng)前位置拷貝一份此時箭頭的形狀,返回一個stamp_id(int型),
# turtle.clearstamp(stamp_id)用來刪除指定stamp_id的箭頭形狀
# turtle.clearstamps(n=None),n為None時表示刪除所有拷貝的箭頭形狀;為0不刪除;n > 0 表示刪除前n個,n < 0 表示刪除后n個
# 例如:
# 畫筆顏色設(shè)成紅色
turtle.color("red")
num = 0
while num < 5:
# 當(dāng)前位置拷貝一份箭頭形狀
stamp_id = turtle.stamp()
turtle.fd(50)
num += 1
# 改變畫筆顏色為黑
turtle.color("black")
# 刪除拷貝的箭頭形狀(此處id最后一次復(fù)制的stamp_id)
turtle.clearstamp(stamp_id)
# 刪除前1個
turtle.clearstamps(1)
# 刪除后1個
turtle.clearstamps(-1)
# 全部刪除
turtle.clearstamps()
# 不刪除
# turtle.clearstamps(0)
# turtle.undo()
# (每調(diào)用一次就)撤銷最后的一次動作,需要撤銷所有可通過while turtle.undobufferentries(),turtle.undobufferentries()返回當(dāng)前可撤銷次數(shù)
# 例如:
# 一直撤銷最后一個動作直到不可撤銷
while turtle.undobufferentries():
# 撤銷最后的一次動作
turtle.undo()
# turtle.speed(speed=None)
Parameters:
peed為0-10的整數(shù)(1-10越來越快,0表示最快,參數(shù)為小數(shù)會被自動置為整數(shù))或如下內(nèi)置的速度字符串,如果>10或小于0.5則被置為0;為>=0.5的小數(shù)時被置為四舍五入的值。speed未設(shè)置則返回當(dāng)前速度
# 內(nèi)置的速度字符串:
"fastest": 0
"fast": 10
"normal": 6
"slow": 3
"slowest": 1
# 例如:
# 速度為0,表示速度最快
turtle.speed(0)
# <0.5速度會被置為0,表示速度最快
turtle.speed(0.4)
# >10速度會被置為0,表示速度最快
turtle.speed(20)
# 速度字符串fastest,表示速度最快
turtle.speed("fastest")
# 速度最慢
turtle.speed("slowest")
# 速度為9
turtle.speed(9)
b).獲取(海龜)箭頭的狀態(tài)
# position() | pos()
# 返回(海龜)箭頭當(dāng)前位置坐標(biāo)
# 例如:
turtle.pos()
# turtle.towards(x, y=None)
# 返回(海龜)箭頭當(dāng)前位置指向(x,y)位置連線的向量的角度(取決于當(dāng)前模式,"standard"/"world"默認(rèn)方向向右(即東)逆時針開始;"logo"模式默認(rèn)方向向上(即北)順時針開始)
Parameters:
x:x可以是一個number或一個pair/vector of numbers或一個turtle instance
y:x是一個number,y就是一個number;否則y為None
# 例如:
turtle.goto(20, 20)
# 移動后,位置為(20,20),兩個向量分別是(20,20)點到(0, 0)點的向量和(20, 20)點到箭頭當(dāng)前方向的向量("standard"模式默認(rèn)向右,逆時針?biāo)憬嵌?"logo"模式默認(rèn)向上,順時針?biāo)憬嵌?
angle = turtle.towards(0, 0)
print("兩向量角度:", angle)
# turtle.towards((0, 0), None)
angle = turtle.towards((0, 0))
print("兩向量角度:", angle)
# turtle箭頭當(dāng)前位置與turtle1箭頭當(dāng)前位置連線的向量到turtle箭頭當(dāng)前位置與turtle當(dāng)前方向連線的向量角度
turtle1 = turtle.Turtle()
turtle1.setpos(0, 0)
angle = turtle.towards(turtle1)
# "standard"模式逆時針?biāo)憬嵌?所以towards()后的角度angle是225,不是135
print("兩向量角度:", angle)
# turtle.xcor() 和 turtle.ycor()
# turtle.xcor()是返回(海龜)箭頭的x坐標(biāo),turtle.ycor()是返回(海龜)箭頭的y坐標(biāo)
# 例如:
turtle.lt(50)
turtle.fd(100)
# 打印箭頭當(dāng)前坐標(biāo)(64.28,76.60)
print(turtle.pos())
# 原數(shù)據(jù)64.27876096865394,保留5位后打印64.27876
print(round(turtle.xcor(), 5))
# 原數(shù)據(jù)76.60444431189781,保留5位后打印76.60444
print(round(turtle.ycor(), 5))
# turtle.heading()
# 返回當(dāng)前箭頭方向角度,取決于當(dāng)前模式mode,"standard"模式時默認(rèn)方向向右逆時針計算角度;"logo"模式默認(rèn)方向向上,順時針計算角度
# 例如:
見turtle.circle中的例子
總結(jié)
以上是生活随笔為你收集整理的Python turtle(介绍一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工信部:1-7 月我国软件业务收入 64
- 下一篇: 丁细牙痛胶囊_功效作用注意事项用药禁忌用