2021年9月6日 星期一

第二堂課 程式初體驗-使用turtle來繪圖

 

一、畫直線和矩形

import turtle


turtle.setup(400, 400) #設定螢幕尺寸(寬度, 高度),單位為像素

wn = turtle.Screen() #產生一個螢幕物件,命名為wn

t = turtle.Turtle() #產生一個turtle物件,命名為t(產生一隻畫筆)

t.pensize(1) #設定畫筆尺寸

t.pencolor("black") #設定畫筆顏色

for x in range(100): #重複執行100x=0,1,2...99

t.forward(x) #每次前進x 像素

t.right(90) #右轉90

wn.mainloop() #等待事件迴圈。# wn.bye()



試看看:
  1. 調整x的大小 。例如: t.forward(x * 2), t.forward(x * 3)...

  2. 調整角度的大小。例如:t.right(89)、t.right(45)、t.ringt(120)…

  3. 調整畫筆尺寸。例如:t.pensize(5)...

  4. 調整畫筆顏色。例如:t.pencolor("red")
    其他顏色名稱:"blue""green""yellow"、"darkred"
    超連結:其他顏色名稱 (需刪除單字間的空格)


二、畫圓形

(一)單一圓形

import turtle


turtle.setup(600, 600)

wn = turtle.Screen()

t = turtle.Turtle()

t.pensize(5)

t.speed(5) #動畫速度:(慢)110(快)0:無動畫效果

t.pencolor(“red”) #設定畫筆顏色為紅色

t.circle(150) # 半徑150像素的圓形




#畫圓、弧、畫點
import turtle

turtle.setup(800, 800)
wn = turtle.Screen()
t = turtle.Turtle()
t.pensize(1)
t.speed(5)
t.pencolor("red")
t.circle(200)

#每移動30度,畫一點
t.pencolor("red")
for i in range(12):
    t.circle(200, 30)
    t.dot(20, "blue")

wn.mainloop()



三、畫多條直線

import turtle


turtle.setup(400, 400)

wn = turtle.Screen()

t = turtle.Turtle()

t.pensize(5)

#顏色串列

color = ["red", "orange","yellow", "green", "cyan","blue", "purple"]

t.speed(0)

for x in range(360):

t.pencolor(color[x % 7]) #利用餘數運算color[0] 紅色、#color[1] 橙色,…

t.forward(200) #前進

t.penup() #提筆

t.backward(200) #後退

t.pendown() #下筆

t.right(4)


wn.mainloop() #等待事件迴圈。# wn.bye()



四、turtle預設值與常用指令
(一)座標系統




(二)常用指令

    1. Turtle motion 動作

        Move and draw 移動和繪圖

  • forward(n) | fd(n) 前進n個像素
    例:t.forward(100) #前進100個像素

  • back(n)| bk(n) | backward(n後退n個像素

  • 例:t.backward(100) #後退100個像素

  • right(angle) | rt(angle) 右轉特定角度
    例:t.right(90) # 右轉90

  • left(angle) | lt(angle) 左轉特定角度
    例:t.left(90) # 左轉90

  • goto(x, [y] ) | setpos(x, [y] ) | setposition(x, [y] ) 移動到某位置
    例:t.goto(100) # 水平移動到x = 100的位置

例:t.goto(100, 200) # 移動到(100, 200)的位置

  • setx(x ) 設定(移動到)x座標
    例:t.setx(100) # 水平移動x = 100的位置

  • sety(y ) 設定(移動到)y座標
    例:t.sety(100) # 垂直移動y = 100的位置

  • setheading(angel) | seth(angel) 設定方向(角度

    例:
    t.setheading(0) # 設定方向為0度(向東)
    例:t.setheading(90) # 設定方向為90度(向北)
    例:t.setheading(180) # 設定方向為180度(向西)
    例:t.setheading(270) # 設定方向為270度(向南)

  • home() 移動到原點(0, 0)
    例:t.home() # 移動到原點ndo() 回復上一動作

  • circle(radius, extent=None, steps=None) 畫圓(弧)形
    例:t.circle( 100) #逆時鐘方向,畫半徑100像素的圓形
    例:t.circle(-100) #順時鐘方向,畫半徑100像素的圓形
    例:t.circle(100, 90) #畫半徑100像素1/4圓弧,圓心角90度的弧形。

  • dot([size], color ) 畫點
    例:t.dot( 100, “red”) #直徑100像素的紅色圓點

  • speed(n) 動畫速度

例:t.speed(5) #動畫的速度為51(慢)~10(快)。0:最快

2. Pen control 畫筆的控制 

    (1) Drawing state 繪圖的狀態)

  • pendown() | pd() | down() 下筆

  • penup() | pu() | up() 提筆

  • pensize(size) | width() 筆的寬度

    (2) Color control 畫筆的顏色控制

  • pencolor([color_value]) 設定畫筆顏色
    例:t.pencolor( ) #傳回畫筆顏色

例:t.pencolor(“red) #傳回畫筆顏色。參數:文字
例:t.pencolor(‘#ff0000) #設定畫筆顏色為紅色。參數:16進位
例:t.pencolor((255, 0, 0)) #設定畫筆顏色為紅色。參數:(r, g, b)
例:t.pencolor(255, 0, 0) #設定畫筆顏色為紅色
例:t.pencolor( 0, 255, 0) #設定畫筆顏色為綠色
例:t.pencolor(255, 255, 255)) #設定畫筆顏色為白色
例:t.pencolor( 0, 0, 0) #設定畫筆顏色為黑色

Filling 填色

  • filling( ) 傳回填色狀態 True False

  • begin_fill( ) 開始填色

  • end_fill( ) 結束填色

    例:
    t.color(“red”, “yellow”) # 前景,背景
    t.begin_fill( )
    t.circle(80)
    t.end_fill( )

(三)顏色清單
       https://trinket.io/docs/colors
        
        使用顏色名稱時需刪除中間的空白

四、習題:畫出下列圖形




4-1 提示:角度約27 4-2 提示:長度固定,角度設為172.5



4-1 提示:角度約27 

4-2 提示:長度固定,角度設為172.5

4-3 提示:角度設為120 

4-4角度設為45

4-5 提示:角度設為120度,並加上t.dot()


五、進階習題:畫我國國徽或國旗、或世界國旗













沒有留言:

張貼留言

習題1. 畫Pokemon 精靈球

任務:參考影片的繪圖步驟,自行完成本頁的範例程式,繪製一顆Pokemon精靈球 解答:在本頁的底部。 """ subject: draw a Pokemon Ball 程式設計:wuhinco@gmai.com  """...