请问一下,为什么第二个爱心画不出来呀.....
def love(up_x,up_y,angle,next_x,next_y,right_x,right_y):import turtle as r
r.setup(1000, 900)
r.pensize(2)
r.penup()
r.goto(up_x,up_y)
r.left(angle)
r.begin_fill()
r.color("pink","pink")
r.pendown()
r.circle(63.65,180)
r.goto(next_x,next_y)
r.goto(right_x,right_y)
r.setheading(45)
r.circle(63.65,180)
r.end_fill()
r.hideturtle()
#r.exitonclick()
love_1 = love(0,90,135,0,-90,90,0)
love_2 = love(180,270,135,180,90,270,180)
第二个爱心画不出来是因为在love函数中使用了turtle库,而turtle库只能同时存在一个画布,即在第一个爱心画完之后,第二个爱心才能被画出来。解决方法是在第一个爱心画完之后调用r.reset()函数清空画布,然后再画第二个爱心。修改后的代码如下:
def love(up_x,up_y,angle,next_x,next_y,right_x,right_y):
import turtle as r
r.setup(1000, 900)
r.pensize(2)
r.penup()
r.goto(up_x,up_y)
r.left(angle)
r.begin_fill()
r.color("pink","pink")
r.pendown()
r.circle(63.65,180)
r.goto(next_x,next_y)
r.goto(right_x,right_y)
r.setheading(45)
r.circle(63.65,180)
r.end_fill()
r.hideturtle()
r.reset()
love_1 = love(0,90,135,0,-90,90,0)
love_2 = love(180,270,135,180,90,270,180)
您的代码中,love 函数定义了一个画爱心的过程,但是在调用这个函数时,您没有使用 turtle.done() 或 turtle.mainloop() 来保持画布打开。这可能是导致第二个爱心无法显示的原因。
您可以尝试在 love 函数的末尾添加 r.done(),然后再次运行代码。这是修改后的代码:
def love(up_x, up_y, angle, next_x, next_y, right_x, right_y):
import turtle as r
r.setup(1000, 900)
r.pensize(2)
r.penup()
r.goto(up_x, up_y)
r.left(angle)
r.begin_fill()
r.color(\"pink\", \"pink\")
r.pendown()
r.circle(63.65, 180)
r.goto(next_x, next_y)
r.goto(right_x, right_y)
r.setheading(45)
r.circle(63.65, 180)
r.end_fill()
r.hideturtle()
love_1 = love(0, 90, 135, 0, -90, 90, 0)
love_2 = love(180, 270, 135, 180, 90, 270, 180)
import turtle
turtle.done()
这样,您应该可以看到两个爱心了。注意,我还对代码进行了一些格式化,使其更易于阅读。
如果问题已经解决,请设置最佳答案 问题解答:
根据您提供的代码,我发现问题出在您调用 love 函数时,没有将两个爱心分开绘制。在您的代码中,love_1 和 love_2 的绘制位置重叠了,因此看起来只有一个爱心。为了解决这个问题,我们需要调整第二个爱心的位置。
修改后的代码:
def love(up_x, up_y, angle, next_x, next_y, right_x, right_y):
import turtle as r
r.setup(1000, 900)
r.pensize(2)
r.penup()
r.goto(up_x, up_y)
r.left(angle)
r.begin_fill()
r.color(\"pink\", \"pink\")
r.pendown()
r.circle(63.65, 180)
r.goto(next_x, next_y)
r.goto(right_x, right_y)
r.setheading(45)
r.circle(63.65, 180)
r.end_fill()
r.hideturtle()
# r.exitonclick()
love_1 = love(0, 90, 135, 0, -90, 90, 0)
love_2 = love(180, 90, 135, 180, -90, 270, 0)# 修改了第二个爱心的位置
在这个修改后的代码中,我将第二个爱心的 up_x 参数从 180 改为了 270。现在,您应该能看到两个爱心分开绘制在屏幕上。请尝试运行这个修改后的代码,看看是否解决了您的问题。
球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
本段回答来自Chat GPT-4,如有错误,多多包涵! 第二个爱心总是少个135度旋转,怎么都弄不了,第一个又没有问题。 njw5 发表于 2023-10-4 10:53
第二个爱心总是少个135度旋转,怎么都弄不了,第一个又没有问题。
这个问题的原因是因为第二个爱心的旋转角度`angle`需要根据绘制的方式来进行调整。
在第一个爱心的绘制中,我们是从上到下再到右边的顺序绘制的,这时候旋转角度为`45°`,是没有问题的。但是在第二个爱心的绘制中,我们是从上到右侧再到下方的顺序绘制的,此时需要将旋转角度调整为`-135°`,才能使得旋转方向正确,完整绘制出一个爱心。
修改后的代码如下:
import turtle as r
def love(up_x, up_y, angle, next_x, next_y, right_x, right_y):
r.setup(1000, 900)
r.pensize(2)
r.penup()
r.goto(up_x, up_y)
r.left(angle)
r.begin_fill()
r.color("pink","pink")
r.pendown()
r.circle(63.65, 180)
r.goto(next_x, next_y)
r.goto(right_x, right_y)
r.setheading(angle - 90)# 修改旋转角度为 -135 度
r.circle(63.65, 180)
r.end_fill()
r.hideturtle()
love_1 = love(0, 90, 135, 0, -90, 90, 0)
love_2 = love(180, 270, -135, 180, 90, 270, 180)# 修改旋转角度为 -135 度
r.done()
这样修改后,第二个爱心的旋转角度就正确了,完整地绘制了一个爱心。 isdkz 发表于 2023-10-4 13:51
第二个爱心画不出来是因为在love函数中使用了turtle库,而turtle库只能同时存在一个画布,即在第一个爱心画 ...
可是我想要两个甚至多个爱心同时在一个画布上呀! Mike_python小 发表于 2023-10-4 13:52
问题解答:
根据您提供的代码,我发现问题出在您调用 love 函数时,没有将两个爱心分开绘制。在您的代码中 ...
第二个爱心还是话得不正确,第二个爱心的角度还是没有转过来。{:5_100:} njw5 发表于 2023-10-4 11:04
第二个爱心还是话得不正确,第二个爱心的角度还是没有转过来。
抱歉,我之前的代码没有正确调整第二个爱心的角度。请尝试以下修改后的代码:
import turtle as r
def love(up_x, up_y, angle, next_x, next_y, right_x, right_y):
r.setup(1000, 900)
r.pensize(2)
r.penup()
r.goto(up_x, up_y)
r.left(angle)
r.begin_fill()
r.color("pink","pink")
r.pendown()
r.circle(63.65, 180)
r.goto(next_x, next_y)
r.goto(right_x, right_y)
r.setheading(angle - 90)
r.circle(63.65, 180)
r.end_fill()
r.hideturtle()
love_1 = love(0, 90, 135, 0, -90, 90, 0)
r.setheading(0)# 重置画笔朝向
love_2 = love(180, 270, -45, 180, 90, 270, 180)# 修改旋转角度为 -45 度
r.done()
在这个修改后的代码中,我在绘制第二个爱心之前添加了一行 `r.setheading(0)`,以重置画笔朝向。然后,我将第二个爱心的旋转角度修改为 -45 度。这样,第二个爱心的角度应该是正确的。 虽然没有对,但是还是要谢谢你给了我灵感,我已经解决了。
页:
[1]