py.turtle學習筆記(簡單圖形繪制)


#蛇.py
import turtle #引入海龜庫
turtle.setup(650,350,200,200) #setup(寬,高 , 坐標,坐標)設置窗體大小及位置,4個參數后兩個可選(不是必須函數)
turtle.penup() #畫筆抬起
turtle.fd(-250) #前進-250個像素
turtle.pendown() #畫筆落下
turtle.pensize(25) #改變畫筆尺寸為25像素
turtle.pencolor("purple") #使畫筆為紫色
turtle.seth(-40) #改變海龜方向為絕對40度(正右方為絕對0度)
for i in range (4): #循環4次
turtle.circle(40,80) #改變海龜行進軌跡(40度為半徑,繪制80度)
turtle.circle(-40,80) #改變海龜行進軌跡 (反向40度為半徑,繪制80度)
turtle.circle(40,80/2) turtle.fd(40) #前進40像素
turtle.circle(16,180) #(r,angle)
turtle.fd(40*2/3) #前進40*2/3像素
turtle.done() #提供手工關閉窗體離開選項

開頭所給出來的一個代碼僅是畫一條簡單的蛇,還有一些其他個人感覺在簡單圖形繪制中比較實用的代碼.
其實只要理解其中的內容就可以畫出許多想要的簡單圖形了。
個人有三個點要着重理解:
1)循環: for i in range()
  循環的使用可以省去我們很多的步驟,同時也可以規避一些不必要的麻煩和使代碼更整潔。
  例如在畫一條蛇中,我沒必要再去把縮進中的函數copy4次。這就是最直觀的效果。
2) 角度:海龜角度是用left,right ;絕對角度是用seth。
  這個理解起來並不難,關鍵得靈活運用。在一些必要的“扭頭”動作,如果想不明白就直接seth,當然在循環體中則需要看需取用了。
3)縮進:

  縮進放不好,歪圖沒得跑。這是要細心留意的。

對於運用turtle庫進行基本圖像繪制,其實並沒有太多的講究。
最簡單的方式就是自己畫一下。
例如你想畫個五角星,你用筆是怎么畫的,那么你用py就是怎么畫。
熟悉py的繪制方式,就可以輕松運用py進行簡單圖形繪制。
接下來就引入自己畫五角星的一個例子:

#畫一個五角星
import turtle    #引入
turtle.setup(650,500,200,200)    #設置窗體尺寸
turtle.pensize(1)    #設置筆的尺寸(海龜身材)
turtle.fillcolor("red")    #設置填充顏色
turtle.begin_fill()    #開填
for i in range(5):    #循環5次
turtle.fd(200)    #前進200像素
turtle.left(216)    #海龜向左轉216°
turtle.end_fill()    #結束填充

 

在做這個東西的時候,我會自己先嘗試在紙上畫一個五角星。並記錄自己的步驟。

 

 

然后再算出必要的角度問題。

 

 

做到這里呢,基本上就能夠明白五角星到底是怎么畫的了。
我們都知道py引入海龜庫畫圖的原理:一個具有“方向感”的海龜在“游泳”。
我們所需要做的也僅僅是讓海龜按照我們的意圖去游而已。
如何做到這一前提?
顯然你是要熟悉海龜庫中的函數。
很多函數開始學是會有點點暈。
但一點點熟悉起來還是很好理解的,多用就行。
當然在愈發復雜的圖形中畫圖思路想出來是很困難的一件事情。
這就需要多多開動腦筋思考了。

 

附:turtle函數(網上摘錄)

 

畫筆的屬性
畫筆(畫筆的屬性,顏色、畫線的寬度等)
1) turtle.pensize():設置畫筆的寬度;
2) turtle.pencolor():沒有參數傳入,返回當前畫筆顏色,傳入參數設置畫筆顏色,可以是字符串如"green", "red",也可以是RGB 3元組。
3) turtle.speed(speed):設置畫筆移動速度,畫筆繪制的速度范圍[0,10]整數,數字越大越快。

命令

說明

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.circle()

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

setx( )

將當前x軸移動到指定位置

sety( )

將當前y軸移動到指定位置

setheading(angle)

設置當前朝向為angle角度

home()

設置當前畫筆位置為原點,朝向東。

dot(r)

繪制一個指定直徑和顏色的圓點

 

 

turtle.fillcolor(colorstring

繪制圖形的填充顏色

turtle.color(color1, color2)

同時設置pencolor=color1,fillcolor=color2

turtle.filling()

返回當前是否在填充狀態

turtle.begin_fill()

准備開始填充圖形

turtle.end_fill()

填充完成

turtle.hideturtle()

隱藏畫筆的turtle形狀

turtle.showturtle()

顯示畫筆的turtle形狀

 

 

turtle.mainloop()或turtle.done()

啟動事件循環 -調用Tkinter的mainloop函數。

必須是烏龜圖形程序中的最后一個語句。

 

turtle.mode(mode=None)

設置烏龜模式(“standard”,“logo”或“world”)並執行重置。如果沒有給出模式,則返回當前模式。

模式

初始龜標題

正角度

standard

向右(東)

逆時針

logo

向上(北)

順時針

 

turtle.delay(delay=None)

設置或返回以毫秒為單位的繪圖延遲。

turtle.begin_poly()

開始記錄多邊形的頂點。當前的烏龜位置是多邊形的第一個頂點。

turtle.end_poly()

停止記錄多邊形的頂點。當前的烏龜位置是多邊形的最后一個頂點。將與第一個頂點相連。

 

turtle.get_poly()

返回最后記錄的多邊形。

                

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM