Upgrade to Pro — share decks privately, control downloads, hide ads and more …

TurtleGraphicsInPython.pdf

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Renyuan Lyu Renyuan Lyu
November 13, 2014
1.7k

 TurtleGraphicsInPython.pdf

Avatar for Renyuan Lyu

Renyuan Lyu

November 13, 2014
Tweet

Transcript

  1. turtle in Python IDLE Help • 從 Python 3.4.2 以後,turtle

    模組 已經被提 昇至 Python IDLE Help 的一部份了,可見得 其重要性已得到 Python 官方認證。 2
  2. 01: 由 # 開頭,是註解行,python直譯器會忽略它。 02~12: 由 ””” 起始,””” 結束,是跨行註解符號, 其間文字python直譯器會忽略它。

    14: 從 turtle 模組 (turtle.py) 引入其所提供的所有軟體元件, 包含物類、函數以及全域變數。 16~38: 本程式的自訂函數之一,名為 yin(), 傳入 radius, color1, color2三個引數, yin() 函數會執行一系列的龜畫圖動作, 恰好構成陰陽太極圖的一半, 名為 yin 恰是中文字「陰」的發音。 40~45: 本程式的自訂函數之一,名為 main(), 程式師想將它作為本程式的主要函數, 其描述了本程式的主要執行流程。 47~49: 行47 偵測本程式是直接作為主程式被執行, 抑或被其他主程式呼叫, 若是前者,__name__ 內建變數值會等於 ‘__main__’ , 於是,行48 會接下去自動執行。亦即前述 main() 函數就開始執行。 最後,行49 mainloop() 是 turtle 模組常用的 進入圖形介面 專用函數。 他允許你運用滑鼠鍵盤等輸入設備在繪圖視窗中操作。 比如說,你可以用滑鼠左鍵點擊繪圖視窗的結束鈕來結束繪圖視窗。 4
  3. 16: 定義本函數之名稱為 yin(),可傳入的引數為radius, color1, color2,分 別是半徑、主色、副色。 17: 龜之畫線筆寬設為 3。 18:

    龜之畫線筆色設為 ”black” (黑色),龜本身及欲填滿區域之顏色設為 color1。 19: 設定於區域中填滿顏色之起始點。 20: 以 radius/2 為半徑,逆時針畫半圓(因為角度設定為180度之故)。 21: 以 radius 為半徑,逆時針畫半圓。 22: 龜向左自轉(逆時針)180度。 23: 以 radius/2 為半徑,順時針畫半圓(因為半徑有負號,故為順時針)。 24: 設定於區域中填滿顏色之結束點。 25: 龜向左自轉90度。 26: 龜提起筆(以下動作將不畫圖於螢幕)。 27: 龜前進 radius*0.35 (大約是 radius 的 1/3)。 28: 龜向右自轉90度。 29: 龜放下筆(以下動作將重新畫圖於螢幕)。 30: 龜之畫線筆色設為 color1 ,龜本身及欲填滿區域之顏色設為 color2。 31: 設定於區域中填滿顏色之起始點。 32: 以 radius * 0.15 為半徑(大約是 radius 的 1/6),逆時針畫全圓(因為沒 設定角度,預設為360度)。 33: 設定於區域中填滿顏色之結束點。 34: 龜向左自轉90度。 35: 龜提起筆。 36: 龜後退 radius*0.35 ,本行與 27行相搭配 。 37: 龜放下筆。 38: 龜向左自轉90度。 5
  4. 6 40: 定義 函數名為 main(),沒有傳入任何引數。本函數將作為本程式 之主要執行流程,main 本意就是「主要」的意思。 41: 重新設定所有龜繪圖的內部參數,如同機器被重新開機一樣。 42:

    呼叫 前面所述的自訂函數 yin(),傳入 radius= 200,主色 為”black”(黑色),副色為”white”(白色)。 43: 再次呼叫 yin() 函數,但主色及副色互換(黑白互換)。 44: ht() 是 hiddenturtle() 的別名函數,用來隱藏龜的形狀。 45: main() 做完後,回傳 "Done!" 字串,在本程式中沒有用到它。 47: 通常一個 python 程式可以自己被當成「主程式」在 python 直譯 器中被執行,若是如此,則該程式執行時有個內建全域變數 __name__,其值為 ‘__main__’,但有時候,一個 python 程式 只是被其他程式呼叫,用來提供函數給其他程式使用,這時該 被呼叫的程式之 __name__ 就不為 '__main__',而是該被呼叫程 式的模組名(通常是該程式自己的檔名,去掉 .py )。因此,行47 常被用來當本程式的主函數真正的進入點,而且使得本程式不 被當主程式執行,而僅是要當作其他程式輔助時,亦可以直接 使用。 48: 呼叫 main() 函數,本程式的主函數。執行龜畫陰陽太極的主 要動作。 49: mainloop() 是 龜畫圖函數庫中常用的 圖形使用者介面(GUI) 無窮 迴圈(infinite loop)函數,它把程式主控權由電腦轉到使用者手上, 使用者藉由滑鼠、鍵盤等,可以開始操控龜畫圖視窗 。不過在 本程式中,程式師並沒有去設計這部分的功能,因此只有預設 的「滑鼠點擊視窗結束按鈕」可供使用者使用。你可以試試看。 本程式若刪除這一行亦無任何影響。未來,當我們要設計更多 滑鼠、鍵盤功能給使用者時,這一行才變得必要。
  5. Overview of available Turtle and Screen methods • https://docs.python.org/3.4/library/turtle.html 7

    Turtle motion Move and draw forward() | fd() backward() | bk() | back() right() | rt() left() | lt() goto() | setpos() | setposition() setx() sety() setheading() | seth() home() circle() dot() stamp() clearstamp() clearstamps() undo() speed() Pen control Drawing state pendown() | pd() | down() penup() | pu() | up() pensize() | width() pen() isdown() Color control color() pencolor() fillcolor()
  6. turtledemo — Demo scripts Name Description Features bytedesign complex classical

    turtle graphics pattern tracer(), delay, update() minimal_hanoi Towers of Hanoi Rectangular Turtles as Hanoi discs (shape, shapesize) planet_and_moon simulation of gravitational system compound shapes, Vec2D tree a (graphical) breadth first tree (using generators) clone() yingyang another elementary example circle() 8
  7. Read the programs, and modify it to learn http://rycodingclub.blogspot.tw/2014/11/turtle-graphics-yinyang.html http://rycodingclub.blogspot.tw/2014/11/turtle-graphics-tree.html

    http://rycodingclub.blogspot.tw/2014/11/blog-post.html 9 你可以在上述網址看到 3 個呂老師的例子。 請你自己也找3個來改。 改完後,post 上 blogspot。 告訴我連結。 在我的 ryTeach.blogspot.com 網頁上登錄。 You can find 3 examples in the above http link. Please find 3 most interesting examples to modify. Your programs should be post on blogspot. and tell me your link by posting it on my ryTeach.blogspot.com
  8. 10

  9. 11

  10. 12