如何在Python中创建自定义海龟形状?
在 Turtle 中,默认情况下,我们有一个用于在画布上绘图的箭头形光标。这可以更改为其他一些预定义的形状,或者我们也可以创建自定义形状并将其注册为名称。不仅如此,我们甚至可以使用gif格式的图片来代替我们的光标。
将光标更改为预定义的形状
shape()函数用于设置光标的形状。预定义的形状包括turtle 、 arrow 、 circle 、 square和triangle 。
Python3
import turtle
# turtle object
c_turtle = turtle.Turtle()
# changing the cursor
# shape to circle
c_turtle.shape('circle')
Python3
import turtle
# turtle object
dimond_turtle = turtle.Turtle()
# the coordinates
# of each corner
shape =((0, 0), (10, 10), (20, 0), (10, -10))
# registering the new shape
turtle.register_shape('diamond', shape)
# changing the shape to 'diamond'
dimond_turtle.shape('diamond')
Python3
import turtle
# turtle object
img_turtle = turtle.Turtle()
# registering the image
# as a new shape
turtle.register_shape('example.gif')
# setting the image as cursor
img_turtle.shape('example.gif')
输出 :
注册新形状
turtle 模块有register_shape()函数用于注册自定义形状。
Syntax : turtle.register_shape(name, shape)
Parameters :
- name : a string- the name of the shape to be registered.
- shape : a tuple of tuples containing the coordinates for the custom shape.
shape 参数的 n 元组参数表示 n 边多边形的每个角的相对位置。让我们尝试创建一个简单的菱形来理解这一点。
考虑这颗钻石,对角线长度 = 20,位于笛卡尔平面中:
要创建这个形状,我们需要按顺时针顺序传递这些坐标。
Python3
import turtle
# turtle object
dimond_turtle = turtle.Turtle()
# the coordinates
# of each corner
shape =((0, 0), (10, 10), (20, 0), (10, -10))
# registering the new shape
turtle.register_shape('diamond', shape)
# changing the shape to 'diamond'
dimond_turtle.shape('diamond')
输出 :
使用 Turtle 光标的图像
要将图像用作光标,我们需要将图像文件路径作为参数传递给register_shape() 。请注意,此图像必须为gif格式。
Python3
import turtle
# turtle object
img_turtle = turtle.Turtle()
# registering the image
# as a new shape
turtle.register_shape('example.gif')
# setting the image as cursor
img_turtle.shape('example.gif')
输出 :