【问题标题】:Defining a relative go-to function - python turtle定义一个相对的首选函数 - python turtle
【发布时间】:2019-04-02 12:19:00
【问题描述】:

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

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

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

pencolor('black')
goto(5, 5)
write('MITSUBISHI', font=('Verdana', '22', 'bold'))
penup()

【问题讨论】:

  • 请从您的代码中发布一个最小的工作示例以获得更好的帮助。
  • 您好,欢迎您!请参阅此链接stackoverflow.com/help/mcve,该链接描述了如何格式化您的问题以便能够收到高质量的答案
  • 刚刚编辑以包含代码的 sn-p
  • 我相信处理已经翻译,它只是移动你绘制的所有内容相对于这些坐标。如果您跟踪自己的相对坐标,则可以模仿这种行为。

标签: python turtle-graphics


【解决方案1】:

如果海龟在位置向量 (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))

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多