## 繪圖套件指令說明 Turtle,概念是源自於 Seymour Papert 和 Wally Feurzig 於1966 年所創造用來引導孩子們學習程式設計的海龜繪圖(Logo)程式語言。 一個Python模組是一個檔案,內含Python程式指令,可以提供其他Python程式應用。只要匯入模組,就可以使用在模組裡事先定義的函式或變數。例如:匯入 turtle 模組後,就可以使用 Screen()方法來產生畫布,或是使用 Turtle() 方法產生一個海龜進行繪圖,這二個方法都是在 turtle 模組裡定義的。 Turtle 套件很是適合中學生來認識 Python ,讓學生熟悉座標、移動、角度的概念,學會最基本的用指令來與電腦溝通。並結合數學課程中幾何圖形概念,讓學生從規律圖形識別出其數學結構。 ### 安裝套件 ```python= # 安裝 ColabTurtle 模組 !pip3 install ColabTurtle # 匯入 ColabTurtle 模組 from ColabTurtle.Turtle import * # 呼叫 initializeTurtle() 函數,來初始化 Turtle initializeTurtle () # 清除畫面 clear() ``` ## 練習12 12.練習題 (12-1) 畫出一個螺旋正方形,更改i的範圍,每次畫的長度,轉的角度,畫出一個你覺得最炫的圖形。 ### (12-1)程式碼 ```python= from ColabTurtle.Turtle import * initializeTurtle() speed(10) #讓海龜暴走 for i in range(200): # 畫200次 forward(3*i) # 試試改變長度為i、4*i或其它 right(90) # 試試改變角度為91、100、151或其它 ``` ### 繪圖結果 ![image](https://hackmd.io/_uploads/Byi7slGvkg.png) ### (12-2)程式碼 ```python= from ColabTurtle.Turtle import * initializeTurtle() import turtle num = 60 # 正方形數量 len = 180 # 線條長度 dec = 3 # 下一個正方形邊長減少長度 for i in range(4): forward(len) right(90) len = len-dec ``` ### 繪圖結果 ![image](https://hackmd.io/_uploads/B1sZigMD1g.png) ### (12-3)程式碼 ```python= from ColabTurtle.Turtle import * initializeTurtle() import turtle speed(10) iNum = 60 # 正方形數量 jNum = 4 # 正方形有四個邊 len = 200 # 線條長度 angle = 90 # 每次轉90度 more = 10 # 下一個正方形多轉10度 dec = 3 # 下一個正方形邊長減少長度 right(10) # 先轉10度 for i in range(60): # 正方形數量 for _ in range(4): forward(len) right(angle) len=len-3 right(10) # 下一個正方形長度少dec ``` ### 繪圖結果 ![image](https://hackmd.io/_uploads/HJnsqeMwkl.png) ## 作業挑戰一: 仿真AI智慧型畫圖機器人製作 ### 題目說明 設計一個簡易AI智慧型畫圖機器人(依輸入值決定圖形): 輸出入介面如下: 電腦:請問您要畫幾邊形 主人:10 電腦:主人這是您要的圖形: … ### 程式碼 ```python= from ColabTurtle.Turtle import * initializeTurtle() import turtle print("電腦:請問您要畫幾邊形", end="") n=int(input()) penup() goto(300,300) pendown() left(90) print("主人這是您要的圖形",end="") for i in range(n): forward(60) right(360/n) ``` ### 繪圖結果 ![image](https://hackmd.io/_uploads/rkGOoxMDJl.png) ## 作業挑戰二: ```python= from ColabTurtlePlus.Turtle import * import math # 初始化 clearscreen() setup(500, 500) showborder() speed(10) # 設置畫筆顏色和寬度 color("brown") pensize(2) # 設定初始位置 T = Turtle() T.left(90) # 初始時讓烏龜朝向上方 # 樹的繪製函數 def draw_tree(length, angle, width): if length < 10: # 假設樹枝長度小於 10 時停止繪製 return else: T.pensize(width) # 設定當前樹枝的寬度 T.forward(length) # 繪製樹幹或分支 # 繪製右邊分支 T.left(angle) draw_tree(length * 0.7, angle, width * 0.7) # 回到原來的樹幹位置 T.right(2 * angle) draw_tree(length * 0.7, angle, width * 0.7) # 返回到樹幹的底部 T.left(angle) T.backward(length) # 開始繪製樹 T.jumpto(0, -200) # 樹的底部 draw_tree(100, 25, 5) # 開始繪製,樹幹長度為 100,角度為 25 度,樹枝寬度為 5 ``` ### 繪圖結果 ![image](https://hackmd.io/_uploads/B15J2lMv1l.png) ## 作業挑戰三: 花朵創作 ### 題目說明 請使用本章學過的技巧,創作一朵花 :::warning 畫圓圈 第一種方法: ColabTurtlePuls circle(100) - 限於在ColabTurtlePlus模組才能使用 第二種方法: ColabTurtle 或是在ColabTurtle中自訂函式circle來畫圓 def circle(n) ::: :::success 換顏色 color() ::: :::info 小技巧 常用的顏色可以參考 網站 black 黑色 snow 雪白 green 綠色 yellow 黃色 red 紅色 gray 灰色 while 白色 orange 橙色 blue 藍色 purple 紫色 pink 粉色 例如:color("red"),就可以把繪圖的顏色轉變成紅色喔。 ::: 記得,顏色前後要加上引號『"』 ### 程式碼 ```python= from ColabTurtle.Turtle import * initializeTurtle() import turtle speed(10) color("red") for i in range(60): for i in range(30): forward(18) right(12) right(10) ``` ### 繪圖結果 ![image](https://hackmd.io/_uploads/Bkt_2gMDkg.png)