如何在Python中建立自定義海龜形狀?
Python 的Turtle庫用於生成2D圖形和動畫。它具有非常簡單的介面,我們可以用它在螢幕上建立形狀和圖案。它帶有一些內建形狀,例如正方形、圓形、三角形等。但是,我們甚至可以藉助 Turtle 建立自己的形狀。在本文中,我們將瞭解如何在python中建立自定義海龜形狀。
在繼續建立自定義形狀之前,我們需要在系統上安裝 Turtle,這可以透過簡單地使用以下命令來完成:
pip install turtle
我們都需要了解 Turtle 的某些函式,這些函式將用於幫助建立自定義形狀,它們如下−
register_shape() − 它用於在 Turtle 中註冊新的自定義形狀。它接收兩個引數,分別是形狀的名稱(作為字串)和一個 (x, y) 座標對的元組,表示形狀的頂點。
.shape() − 成功註冊形狀後,使用 register_shape() 方法,可以透過使用 .shape() 函式將其用作形狀,並且必須提供一個字串引數,即形狀的名稱。
.color() − 此方法僅用於設定圖形的顏色,它可以接收多個引數,所有這些引數都與顏色相關。引數可以是顏色的直接名稱,例如紅色、藍色、綠色等,也可以是顏色的十六進位制程式碼,甚至可以是 RGB 值,這意味著三個整數格式的引數。
簡而言之,register_shape() 用於建立和註冊形狀,而 .shape() 用於實現註冊的形狀。
1. 正方形
我們首先了解如何手動建立一個簡單的正方形,這將需要上面提到的函式。
示例
import turtle # create turtle object t = turtle.Turtle() # define shape vertices square_shape = ((-50, -50), (-50, 50), (50, 50), (50, -50)) # register the shape turtle.register_shape("square", square_shape) # use the shape t.shape("square") t.color("green") # This functions is important to keep the turtle window on turtle.done()
輸出
2. 星星
星星也是一個簡單的形狀,其點從中心延伸。它們通常用作裝飾元素,但在數學中也可能有科學意義。它只需要仔細宣告座標,而其餘程式碼將與上面相同。
示例
import turtle t = turtle.Turtle() star_shape = ((0, 50), (-14, 16), (-50, 16), (-23, -12), (-35, -46), (0, -24), (35, -46), (23, -12), (50, 16), (14, 16)) turtle.register_shape("star", star_shape) t.shape("star") t.color("green") turtle.done()
輸出
3. 六邊形
六邊形是一個 6 邊形,有 6 個角。它存在於蜂窩或化學苯環中。這裡也需要仔細更改和提及座標。
示例
import turtle t = turtle.Turtle() hexagon_shape = ((-50, 0), (-25, 43.3), (25, 43.3), (50, 0), (25, -43.3), (-25, -43.3)) turtle.register_shape("hexagon", hexagon_shape) t.shape("hexagon") t.color("red") turtle.done()
輸出
4. 十字
十字元號通常用於醫療機構,如藥劑師和醫院。它也是紅十字會的標誌,在危機和緊急情況下提供援助。十字架有時也稱為“加號”。
示例
import turtle t = turtle.Turtle() Cross_shape = ((-50, 0), (-15, 0), (-15, -50), (15, -50), (15, 0), (50, 0), (50, 50), (15, 50), (15, 100), (-15, 100), (-15, 50), (-50, 50)) turtle.register_shape("Cross", Cross_shape) t.shape("Cross") t.color("red") turtle.done()
輸出
5. 立方體
立方體是一種 3D 形狀,由 6 個正方形面組成,這些面以直角相交,也稱為正六面體。立方體的每個面在形狀和大小上都是全等的,所有邊的長度都相同。由於其形狀和特性,立方體在數學、物理和工程學中得到廣泛研究。雖然我們的螢幕顯示 2D 影像,但我們試圖建立 3D 視覺化效果或賦予 2D 圖形 3 維外觀。在此示例中,建立是藉助海龜動畫完成的,但是動畫已透過使用 hideturtle() 和 tracer(0) 函式關閉,並且可以透過修改這些語句來檢視動畫。動畫在後臺完成,螢幕在完成時更新。
示例
import turtle t = turtle.Turtle() t.hideturtle() turtle.tracer(0) # Draw the front side of the square t.begin_fill() t.color("red") t.goto(100, 0) t.goto(100, 100) t.goto(0, 100) t.goto(0, 0) t.end_fill() # Draw the right side of the square t.begin_fill() t.color("orange") t.goto(100, 0) t.goto(120, 20) t.goto(120, 120) t.goto(100, 100) t.end_fill() # Draw the top side of the square t.begin_fill() t.color("yellow") t.goto(0, 100) t.goto(20, 120) t.goto(120, 120) t.goto(100, 100) t.end_fill() turtle.update() turtle.done()
輸出
6. 科赫雪花
科赫雪花是一種分形曲線。它們是透過使用等邊三角形將其每條邊分成相等的部分,然後用形成等邊凸起或突起的 2 個部分替換其中間部分來建立的。此過程將針對先前步驟中建立的所有 4 條線段繼續進行。這裡也需要動畫,為了簡單起見,它被隱藏起來,可以透過修改前面示例中提到的函式來啟用它。
示例
import turtle t = turtle.Turtle() # Hide turtle object t.hideturtle() turtle.tracer(0) # Draw the Koch snowflake def koch_snowflake(length, depth): if depth == 0: t.forward(length) else: for angle in [60, -120, 60, 0]: koch_snowflake(length / 3, depth - 1) t.left(angle) # Set turtle position and angle t.penup() t.goto(-150, 150) t.pendown() t.setheading(0) # Draw the Koch snowflake t.color("blue") t.begin_fill() for i in range(3): koch_snowflake(300, 4) t.right(120) t.end_fill() turtle.done()
輸出
結論
海龜庫非常適合建立視覺圖形,併為您的專案增加個性化水平。透過使用 shape_register() 函式,我們可以建立任何型別的形狀,並使用 .shape() 函式來實現/繪製形狀。無論形狀是否為人類所知,都可以建立,而所需的只是座標。建立自定義形狀是一項簡單的任務,只需要一點創造力和程式設計知識。我們已經實現了多種型別的形狀,從簡單的正方形到 3D 立方體和科赫雪花。