什麼是turtle?
<aside> 🎨 Turtle模組是一種簡易的繪圖程式
</aside>
- turtle 具有三個屬性
- 位置 (location)
- 方向 (direction)
- 筆 (pen)
- 繪圖座標
如何在python中使用turtle模組?
1. 載入turtle模組
import turtle
2. 設定畫布
<aside> 🪴 任何繪圖動作皆須在畫布上,因此需先初始化畫布物件
</aside>
screen = turtle.Screen()
3. 控制turtle動作
<aside> 🌳 可使用函式控制
</aside>
#控制turtle往前10pixel
turtle.foward(10)
4. 結束繪圖程式
<aside> 🌴 當程式執行完後會直接關閉,需用**mainloop()**控制畫布的開啟狀態
</aside>
screen.mainloop()
常用方法
- 移動及繪製
- turtle.foward(distance) & turtle.backward(distance)
- 簡寫
- foward ⇒ fd
- backward ⇒ bk
- distance → 移動的距離
# 向後移動100px turtle.backward(100)
- 簡寫
- turtle.right(angle) & turtle**.left**(angle)
- angle → 角度
# 順時針旋轉45度 turtle.right(45) # 逆時針旋轉75度 turtle.left(75)
- angle → 角度
- turtle.circle(radius, extent=None, steps=None)
- radius → 半徑
- extent → 夾角
- steps → 圖形的邊數
# 半徑為20的圓形 turtle.circle(20) # 半徑為20的半圓 turtle.circle(20, 180) #半徑為20的正五邊形 turtle.circle(20, None, 5)
- turtle.goto(x, y)
- 移動到絕對位置
turtle.goto(-100,-10)
- 移動到絕對位置
- turtle.speed(speed)
- speed → 0~10或speedstring
- speedstring
- “fatest” → 0
- “fast” → 10
- “normal” → 6
- “slow” → 3
- “slowest → 1
turte.speed(3)
- speedstring
- speed → 0~10或speedstring
- turtle.foward(distance) & turtle.backward(distance)
- 控制畫筆
- 調整畫筆顏色
turtle.pencolor("#5f9ea0")
- 調整畫筆大小
turtle.pensize(10)
- 畫筆落下,移動時會畫線
turtle.pendown()
- 畫筆提起,移動時不畫線
turtle.penup()
- turtle外觀
- turtle.shape(name)
- name → 形狀名需存於TurtleScreen的shape字典中
- e.g. “arrow”, “turtle”, “circle”, “square”, “triangle”
turtle.shape("turtle")
- name → 形狀名需存於TurtleScreen的shape字典中
- 設定顏色
- 字串
turtle_color_list = ["red"]
- 色票
turtle_color_list = ["#281597"]
- 三原色
turtle_color_list = [(r, g, b)]
- turtle.shape(name)
實作
用迴圈畫出正方形
import turtle
screen = turtle.Screen()
screen.setup(500, 500)
myTurtle = turtle.Turtle()
for color in ['red', 'blue', 'green', 'orange']:
myTurtle.color(color)
myTurtle.forward(100)
myTurtle.left(90)
# 按一下離開
screen.exitonclick()
龜兔賽跑
from turtle import Turtle, Screen
import random
import time
# 建立畫布
screen = Screen()
screen.colormode(255)
screen.bgcolor("black")
screen.title("龜兔賽跑")
screen.setup(600, 600)
turtle = Turtle()
turtle.hideturtle()
turtle_list = []
turtle_color_list = [(255,0,0), "orange", "yellow", "green", "blue"]
turtle_start_x = -280
turtle_start_y = -200
for player in range(5):
turtle = Turtle(shape="turtle", visible=False)
turtle.color(turtle_color_list[player])
turtle.penup()
turtle.goto(turtle_start_x, turtle_start_y)
turtle.showturtle()
turtle_list.append(turtle)
turtle_start_y += 100
time.sleep(1)
is_race_on = True
while is_race_on:
time.sleep(0.04)
player = random.randint(0, 4)
turtle_list[player].forward(10)
if turtle_list[player].xcor() > 260:
is_race_on = False
screen.exitonclick()