Python 如何创建自定义的乌龟形状
Python的 Turtle 库用于生成2D图形和动画。它具有非常简单的界面,可以在屏幕上创建形状和图案。它带有一些内置形状,如正方形、圆形、三角形等。然而,我们甚至可以使用Turtle的帮助创建自己的形状。本文将介绍如何在Python中创建自定义的乌龟形状。
在继续创建自定义形状之前,我们需要在系统上安装Turtle,这可以通过以下命令简单完成:
pip install turtle
我们都需要了解Turtle的一些函数,这些函数将用于帮助创建自定义形状,它们如下:
- register_shape() - 用于在Turtle中注册新的自定义形状。它接受两个参数,形状的名称(字符串)和表示形状顶点的(x, y)坐标对的元组。
-
.shape() - 一旦成功注册了一个形状,就可以使用.register_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. 六边形
六边形是一种有六个边和六个角的多边形。它可以在蜂窝或化学中的苯环中找到。在这里,需要小心地改变并提及坐标。
示例
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. 立方体
立方体是一种由6个正方面组成的三维形状,它们相互垂直相交,也被称为正六面体。立方体的每个面在形状和大小上都是相同的,并且边的长度都相等。由于其形状和特性,立方体在数学、物理和工程中得到广泛研究。尽管我们的屏幕代表的是二维图像,但我们尝试创建一个三维视觉效果,或者给二维图形以三维的外观。在这个例子中,利用乌龟的动画效果进行了创建,然而通过使用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. 科赫雪花
科赫雪花是一种分形曲线。它们通过将等边三角形的每条边分成相等的小段,并将中间的小段替换为形成等边凸起的两个小段来创建。这个过程对前面步骤中创建的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()
输出
结论
通过使用turtle库,我们可以创建带有个性化的可视化图形来实现项目。通过使用shape_register()函数,我们可以创建任何类型的形状,并使用.shape()函数来绘制该形状。无论该形状是否为人类所知,只要有坐标,就可以创建任何类型的形状。创建自定义形状是一项简单的任务,只需要一点创意和编程知识。我们实现了多种类型的形状,从简单的正方形到3D立方体和科赫雪花。