如何在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