Python Turtle 根据坐标自定义形状

问题描述 投票:0回答:1

似乎当您使用一组坐标指定海龟形状时,您必须首先将 y 坐标放入每个元组中,然后再放置 x 坐标,但我在任何地方都找不到此记录。这是真的吗?

这是定制设计的形状:

如果我使用此处所示的坐标注册此形状

s.register_shape('house', ((-10,-10),(10,-10),(10,2),(0,12),(-4,8),
                        (-4,12),(-6,12),(-6,6),(-10,2)))

这是结果:

图像不仅顺时针旋转了 90 度,而且变成了镜像(烟囱在房子的另一边)。但是,如果我反转每个元组中的 x 和 y 坐标,我会得到这个结果

我很困惑为什么寄存器形状代码有这种奇怪的异常。当然应该在文档中的某个地方提到它。

回复ggorlen:

这是代码

from turtle import *

s = Screen()
s.setup(400,400)
s.bgcolor('lightgray')
s.register_shape('house', ((-10,-10),(10,-10),(10,2),(0,12),(-4,8),
                            (-4,12),(-6,12),(-6,6),(-10,2)))
s.register_shape('house_xy_switch', ((-10,-10),(-10,10),(2,10),(12,0,),
                            (8,-4),(12,-4),(12,-6),(6,-6),(2,-10)))

chez_moi = Turtle()
#chez_moi.shape('house')
chez_moi.shape('house_xy_switch')

在 Python 海龟图形中,y 坐标向上增加,0,0 位于屏幕中心。我的假设是,这也将是指定海龟自定义形状坐标的方案。

我使用在线平台trinket进行编码,该平台使用Python 3.2.0。我刚刚在 IDLE 中使用 Python 3.10.7 尝试过“房子”形状,它顺时针旋转 90 度,但不再是镜像。所以在3.2到3.10之间一定对turtle代码进行了一些修改。

python python-3.x shapes turtle-graphics python-turtle
1个回答
0
投票

使用您原来的绘图坐标,我相信海龟正在做正确的事情。海龟的起始航向为 0 度,朝向 X 轴正方向。因此,如果我们希望房子直立,我们需要将航向设置为 90 度,朝向正 Y 轴:

from turtle import Screen, Turtle

screen = Screen()

screen.register_shape('house', ( \
    (10, -10), (-10, -10), (-10, 2), (-6, 6), \
    (-6, 12), (-4, 12), (-4, 8), (0, 12), (10, 2) \
    ) \
)

turtle = Turtle(shape='house')
turtle.shapesize(5)

turtle.setheading(90)

screen.exitonclick()

代替

turtle.setheading(90)
,您可以在设置
screen.mode("logo")
使用“向上为零度”模型后执行
screen
。不管怎样,我没有看到任何反向烟囱问题。

© www.soinside.com 2019 - 2024. All rights reserved.