定义一个相对的go-to函数——python乌龟

解决 python 海龟中的一个问题,我需要使用海龟在正方形内绘制设计并将其中许多正方形放置在所需的坐标处。


我当前的设计使用该goto(x,y)函数,但很明显,在不同位置调用它们时,设计代码仍在原始位置调用。有没有办法制作相对于正方形的定位功能或任何其他解决方法?我了解海龟的基础知识,但我仍然是一个初学者。干杯


编辑:代码的小例子(适用于在 0,0 处绘制的正方形,但是当正方形放置在不同的 x,y 坐标时,文本不会随之移动)


pencolor('black')

goto(5, 5)

write('MITSUBISHI', font=('Verdana', '22', 'bold'))

penup()


开心每一天1111
浏览 317回答 2
2回答

慕少森

如果海龟在位置向量 (x, y) 处,并且您想将其移动,例如向右移动 3 次和向上移动 5 次,您只需将其添加到坐标中,因此海龟需要移动到(x + 3, y + 5)。幸运的是,turtle.Vec2D支持这样的加法,你可以goto在向量上使用。您可以通过以下方式获取当前位置turtle.pos()import turtledef goto_relative(dx, dy=None):    """Moves the automatic global turtle by dx and dy (Or a given vector)"""    goto_relative_on_turtle(turtle, dx, dy)def goto_relative_on_turtle(t, dx, dy=None):    """Moves al turtle by dx and dy (Or a given vector)"""    if dy is None:        dx, dy = dx    t.goto(t.pos() + turtle.Vec2D(dx, dy))

慕尼黑5688855

除了@Artyer 的出色答案 (+1) 之外,不要忘记forward(), backward(), left(),right()它们都是相对位置操作,而不是绝对操作goto()和setheading()。使用提供的相关操作可能需要重新考虑您的图形。在紧要关头,你总是可以做一些丑陋的事情,比如:t.setx(t.xcor() + 10)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python