为什么乌龟的心看起来是倾斜的?

问题描述 投票:0回答:1
import turtle

t = turtle.Turtle()

def heart(x):
    t.penup()
    t.goto(x, -100)
    t.pendown()

    t.color('black','red')
    t.begin_fill()
    t.left(45)
    t.forward(100)
    t.circle(50, 180)
    t.right(90)
    t.circle(50, 180)
    t.forward(100)
    t.end_fill()


for i in range(3):
    if i==1:
        x=-250
        heart(x)
    elif i==2:
        #continue
        x=0
        heart(x)
    else:
        #continue
        x=250
        heart(x)


t.hideturtle()
turtle.done()

这个程序应该将三颗心画成一条直线 我制作了一个循环来设置心脏的初始位置。它应该将心脏绘制在一个位置并移动到下一个位置。当指针移动到下一个位置时,心形出现倾斜。

python turtle-graphics python-turtle
1个回答
2
投票

您的

heart
函数假设海龟的航向为 0,但在绘制心形的过程中,由于
left
/
right
调用,航向发生变化。

一种解决方案是在函数开始时使用

t.setheading(0)
重置标题。

此外,你的循环/

if
组合过于复杂。我建议删除
if
或同时删除循环和
if
并使用 3 个单独的
heart
调用。这是一个简化版本:

from turtle import Screen, Turtle


def heart(x):
    t.penup()
    t.goto(x, -100)
    t.pendown()
    t.color("black", "red")
    t.setheading(0)
    t.begin_fill()
    t.left(45)
    t.forward(100)
    t.circle(50, 180)
    t.right(90)
    t.circle(50, 180)
    t.forward(100)
    t.end_fill()


t = Turtle()
t.hideturtle()

for x in range(-250, 251, 250):
    heart(x)

Screen().exitonclick()

考虑为

size
以及可选的
y
创建
heart
t
值参数。事实上,它有点硬编码。

© www.soinside.com 2019 - 2024. All rights reserved.