全網最細海龜 (turtle) 畫圖講解 (一):初探海龜繪圖
阿新 • • 發佈:2020-12-30
目錄
最近博主在 CSDN 上看到許多關於海龜畫圖的案例,如畫聖誕樹、五角星等,但是都是直接給出了原始碼以及一些簡單的註釋,沒有對其詳細的說明,會讓很多初學者迷糊很久,故這裡博主詳細地對 turtle 模組中的方法進行詳解,讓廣大博友能夠做到自由畫圖。
海龜繪圖是 Python 內建的一個比較有趣的模組,模組名稱為 turtle。它最初源於 20世紀60年代 的 Logo 語言,之後成為了 Python 的內建模組。海龜繪圖提供了一些簡單的繪圖方法,可以根據編寫的控制指令(程式碼),讓一個 “海龜” 在螢幕上來回移動,而且可以在它爬行的路徑上繪製圖形。通過海龜繪圖,不僅可以在螢幕上繪製圖形,還可以看到整個繪製過程。另外,海龜繪圖對初學者十分友好,它能夠輕鬆地編寫出很多有趣的例項。
1. 初探海龜繪圖
海龜繪圖是 Python 內建的模組,在使用前需要匯入該模組,可以使用以下幾種方法匯入:
import turtle # 通過模組名來使用其中的方法、屬性
import turtle as t # 通過別名t來使用其中的方法、屬性
from turtle import * # 可以直接使用其中的方法、屬性
1.1 瞭解海龜繪圖的座標系
在學習海龜繪圖之前,需要先了解海龜繪圖的座標系。海龜繪圖採用的是平面座標系,即畫布(視窗)的中心為原點(0,0),橫向為 x 軸,縱向為 y 軸,x 軸控制水平位置,y 軸控制垂直位置。例如,一個 400×320 的畫布,對應的座標系如下圖所示。
在上圖中,綠色虛線框為畫布大小。海龜活動的空間為綠色虛線框以內。即 x 軸的移動區間為 -200~200,y 軸的移動區間為 -160~160。同數學中一樣,表示海龜所在位置(即某一點)的座標為 (x, y)。
1.2 海龜繪圖的三要素
採用海龜繪圖有三個關鍵要素,即方向、位置和畫筆。在進行海龜繪圖時,主要就是控制這些要素來繪出我們想要的圖形。下面分別進行介紹。
- 方向 在進行海龜繪圖時,方向主要用於控制海龜的移動方向。主要有以下 3 個方法進行設定
left()/lt() 方法:讓海龜左轉 (逆時針) 指定度數。
right()/rt() 方法:讓海龜右轉 (順時針) 指定度數。
setheading()/seth() 方法:設定海龜的朝向為0(東)、90(北)、180(西)或 270(南)。 - 位置 在進行海龜繪圖時,位置主要用於控制海龜移動的距離。主要有以下 6 個方法進行設定:
forward(distance):讓海龜向前移動指定距離,引數 distance 為有效數值。
backward(distance):讓海龜向後退指定距離,引數 distance 為有效數值。
goto(x,y):讓海龜移動到畫布中的特定位置。即座標 (x,y) 所指定的位置。
setx(x):設定海龜的橫座標到 x,縱座標不變。
sety(y):設定海龜的縱座標到 y,橫座標不變。
home():海龜移至初始座標(0,0),並設定朝向為初始方向。 - 畫筆 海龜繪圖中的畫筆就相當於現實生活中繪圖所用的畫筆。在海龜繪圖中,通過畫筆可以控制線條的粗細、顏色和運動的速度。關於畫筆的詳細介紹請看後續。
1.3 繪製第一隻海龜
# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:2.繪製一隻向前爬行的海龜.py
@time:2020/12/29
"""
import turtle # 匯入海龜繪圖模組
t_ufo = turtle.Turtle() # 建立一隻小海龜,命名為t_ufo 等價==>turtle.Pen()
t_ufo.forward(200) # 向前爬行200畫素
# 海龜繪圖預設情況下,游標為箭頭,可以通過海龜的shape()方法進行修改
# 將游標修改為海龜形狀
t_ufo.shape("turtle") # 設定為海龜形狀
turtle.done() # 海龜繪圖程式的結束語句(開始主迴圈) 等價==> turtle.mainloop()
"""
注意:如果在螢幕上只需要有一隻小海龜,那麼也可以不建立海龜物件,直接使用turtle作為海龜物件即可。
"""
程式執行結果如下: