如何在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 立方体和科赫雪花。