如何在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 立方體和科赫雪花。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP