【问题标题】:How can I make a turtle start from the endpoint of another?如何让乌龟从另一个端点开始?
【发布时间】:2021-09-10 05:29:18
【问题描述】:

例如:我用一只乌龟做了一个正方形,另一个乌龟应该从正方形乌龟的端点开始,而不是从头开始。

hexagonTurtle = turtle.Turtle()
def hexagon(hexagonTurtle, size):
hexagonTurtle.pendown()
hexagonTurtle.pencolor('yellow')
hexagonTurtle.pensize(10)
hexagonTurtle.left(90)
for i in range(6):
    hexagonTurtle.forward(size)
    hexagonTurtle.right(60)
hexagonTurtle.left(60)
hexagonTurtle.back(size)
hexagonTurtle.left(60)
hexagonTurtle.back(size)
hexagonTurtle.right(210)

pentagonTurtle = turtle.Turtle()

def pentagon (pentagonTurtle, size):
pentagonTurtle.penup()
pentagonTurtle.forward(430)
pentagonTurtle.pendown()
pentagonTurtle.pencolor('green')
pentagonTurtle.pensize(10)
pentagonTurtle.left(90)
for i in range(5):
    pentagonTurtle.forward(size)
    pentagonTurtle.right(72)

hexagon(hexagonTurtle, 120)
pentagon(pentagonTurtle, 120)

【问题讨论】:

  • 注释 SO 上的缩进用于将行标记为代码。如果没有给所有行提供相同数量的额外缩进(4 个空格或 1 个制表符),它会破坏 Python 的块缩进。阅读编辑器中的帮助以获取更多信息,然后请修复示例代码缩进。

标签: python python-3.x turtle-graphics python-turtle


【解决方案1】:

与其从头开始创建第二个海龟并对其进行调整以匹配您的第一个海龟,根据您的程序设计,您可以使用的另一种方法是简单地克隆您的第一个海龟:

hexagonTurtle = turtle.Turtle()
hexagon(hexagonTurtle, 120)
pentagonTurtle = hexagonTurtle.clone()
pentagon(pentagonTurtle, 120)

它将从与它克隆的海龟相同的位置和方向开始。完整的例子:

from turtle import Screen, Turtle

def hexagon(turtle, size):
    turtle.pencolor('yellow')
    turtle.pensize(10)

    turtle.left(90)

    for _ in range(6):
        turtle.forward(size)
        turtle.right(60)

    turtle.left(60)
    turtle.backward(size)
    turtle.left(60)
    turtle.backward(size)
    turtle.right(210)

def pentagon(turtle, size):
    turtle.pencolor('green')
    turtle.pensize(10)

    turtle.penup()
    turtle.forward(430)
    turtle.pendown()

    turtle.left(90)

    for _ in range(5):
        turtle.forward(size)
        turtle.right(72)

screen = Screen()
screen.setup(1000, 500)
screen.setworldcoordinates(-100, -200, 900, 300)  # for demonstration purposes only

hexagonTurtle = Turtle()
hexagon(hexagonTurtle, 120)
pentagonTurtle = hexagonTurtle.clone()
pentagon(pentagonTurtle, 120)

screen.exitonclick()

【讨论】:

    【解决方案2】:

    您可以使用turtle.position()/turtle.pos() 获取乌龟的位置,使用turtle.goto()/turtle.setpos/turtle.setposition 设置乌龟的位置。同样,使用turtle.heading() 获取乌龟的朝向,turtle.setheading() 设置乌龟的朝向。

    pentagonTurtle.penup()
    pentagonTurtle.goto(hexagonTurtle.pos())
    pentagonTurtle.setheading(hexagonTurtle.heading())
    

    【讨论】:

    • goto(turtle.pos())就可以了,不需要解包返回值。
    • @cdlane: 但是如果我想要打开它呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    相关资源
    最近更新 更多