如何让turtle海龟画笔从另一只画笔的结束位置开始绘制
实现方法
每只turtle实例都独立存储自身的位置、朝向等状态,你只需要在第一只海龟绘制完成后,读取它的终点状态同步给第二只海龟即可,无需手动计算偏移量。
- 用到的核心API:
turtle.pos():获取海龟当前坐标,返回格式为(x, y)的元组turtle.goto(x, y):将海龟移动到指定坐标,移动前抬笔可避免留下多余痕迹turtle.heading():获取海龟当前的朝向角度turtle.setheading(angle):将海龟的朝向调整为指定角度
修改后的完整代码
import turtle 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.pendown() pentagonTurtle.pencolor('green') pentagonTurtle.pensize(10) pentagonTurtle.left(90) for i in range(5): pentagonTurtle.forward(size) pentagonTurtle.right(72) # 绘制六边形 hexagon(hexagonTurtle, 120) # 同步第一只海龟的终点状态给第二只海龟 end_position = hexagonTurtle.pos() end_heading = hexagonTurtle.heading() pentagonTurtle.penup() pentagonTurtle.goto(end_position) pentagonTurtle.setheading(end_heading) # 从六边形终点位置开始绘制五边形 pentagon(pentagonTurtle, 120) turtle.done()
补充说明
如果你不需要第二只海龟和第一只海龟结束时的朝向保持一致,仅需要起点位置相同,可以省略setheading()相关代码。
内容的提问来源于stack exchange,提问作者Black
相关产品推荐
相关产品推荐

