为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开心每一天1111 2021-12-26 10:26:06
解决 python 海龟中的一个问题,我需要使用海龟在正方形内绘制设计并将其中许多正方形放置在所需的坐标处。我当前的设计使用该goto(x,y)函数,但很明显,在不同位置调用它们时,设计代码仍在原始位置调用。有没有办法制作相对于正方形的定位功能或任何其他解决方法?我了解海龟的基础知识,但我仍然是一个初学者。干杯编辑:代码的小例子(适用于在 0,0 处绘制的正方形,但是当正方形放置在不同的 x,y 坐标时,文本不会随之移动)pencolor('black')goto(5, 5)write('MITSUBISHI', font=('Verdana', '22', 'bold'))penup()
查看完整描述

2 回答

?
慕少森

TA贡献2019条经验 获得超9个赞

如果海龟在位置向量 (x, y) 处,并且您想将其移动,例如向右移动 3 次和向上移动 5 次,您只需将其添加到坐标中,因此海龟需要移动到(x + 3, y + 5)。幸运的是,turtle.Vec2D支持这样的加法,你可以goto在向量上使用。您可以通过以下方式获取当前位置turtle.pos()


import turtle


def 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))


查看完整回答
反对 回复 2021-12-26
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

除了@Artyer 的出色答案 (+1) 之外,不要忘记forward()backward()left()right()它们都是相对位置操作,而不是绝对操作goto()setheading()。使用提供的相关操作可能需要重新考虑您的图形。

在紧要关头,你总是可以做一些丑陋的事情,比如:

t.setx(t.xcor() + 10)


查看完整回答
反对 回复 2021-12-26
  • 2 回答
  • 0 关注
  • 316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信