gpt4 book ai didi

python - 使用 Python turtle 制作没有 circle 函数的圆

转载 作者:太空宇宙 更新时间:2023-11-03 14:22:03 25 4
gpt4 key购买 nike

我有这个学校作业:

搭建一个雪人没有 turtle circle函数

雪人应该在蓝色背景上,并且应该用白色填充。

雪人的轮廓应该是黑色的。

雪人的 body 应该由 3 个实心圆圈组成。

每个圆圈的轮廓应为 3 像素宽。

底部圆的半径应为 100 像素。

中间圆的半径应为 70 像素。

顶部圆的半径应为 40 像素。

每个圆圈都应位于其下方圆圈的上方(底部圆圈除外,它可以位于任何位置)。

圆圈之间不应有空隙。

给雪人嘴巴、眼睛和 Nose (帽子是可选的)。

确保每只手都包括两个棍臂和至少两个手指。

到目前为止,我已经创建了这个,但在我继续之前我似乎无法找到正确的圆圈。此外,不知道如何给圆圈上色为眼睛画点。请帮助我,第一次编码。

import turtle                               # allows us to use turtle library
wn = turtle.Screen() # allows us to create a graphics window
wn.bgcolor("blue") # sets gtaphics windows background color to blue
import math # allows us to use math functions
quinn = turtle.Turtle() # sets up turtle quinn
quinn.setpos(0,0)
quinn.pensize(3)
quinn.up()

# drawing first circle middle
quinn.forward(70)
quinn.down()
quinn.left(90)

# calculation of cicumference of a circle
a = (math.pi*140.00/360)

#itineration for first circle
for i in range (1,361,1):
quinn.left(a)
quinn.forward (1)

# drawing second circle bottom
quinn.up()
quinn.home()
quinn.right(90)
quinn.forward(70)
quinn.left(90)
quinn.down()

b = (math.pi*200.00/360)

for i in range (1,361,1):
quinn.right(b)
quinn.forward(1)

# drawing third circle head top

quinn.up ()
quinn.goto(0,70)
quinn.right(90)
quinn.down()

c =(math.pi*80/360)

for i in range (1,361,1):
quinn.left(c)
quinn.forward(1)

wn.exitonclick()

最佳答案

下面是一个绘制蓝色圆圈的示例函数:

def draw_circle(radius):    
turtle.up()
turtle.goto(0,radius) # go to (0, radius)
turtle.begin_fill() # start fill
turtle.down() # pen down
turtle.color('blue')
times_y_crossed = 0
x_sign = 1.0
while times_y_crossed <= 1:
turtle.forward(2*math.pi*radius/360.0) # move by 1/360
turtle.right(1.0)
x_sign_new = math.copysign(1, turtle.xcor())
if(x_sign_new != x_sign):
times_y_crossed += 1
x_sign = x_sign_new
turtle.up() # pen up
turtle.end_fill() # end fill.
return

然后你可以修改上面的函数,为圆心的位置(x,y)添加参数:

def draw_circle(radius, x, y):    
turtle.up()
turtle.goto(x,y+radius) # go to (x, y + radius)
turtle.begin_fill() # start fill
turtle.down() # pen down
turtle.color('blue')
times_y_crossed = 0
x_sign = 1.0
while times_y_crossed <= 1:
turtle.forward(2*math.pi*radius/360.0) # move by 1/360
turtle.right(1.0)
x_sign_new = math.copysign(1, turtle.xcor())
if(x_sign_new != x_sign):
times_y_crossed += 1
x_sign = x_sign_new
turtle.up() # pen up
turtle.end_fill() # end fill.
return

您可以轻松地添加点,例如:

turtle.goto(-20,10)
turtle.color('red')
turtle.dot(20)
turtle.goto(40,10)
turtle.dot(20)

综合:

import turtle
import math

def draw_circle(radius, x, y):
turtle.up()
turtle.goto(x,y+radius) # go to (0, radius)
turtle.begin_fill() # start fill
turtle.down() # pen down
turtle.color('blue')
times_y_crossed = 0
x_sign = 1.0
while times_y_crossed <= 1:
turtle.forward(2*math.pi*radius/360.0) # move by 1/360
turtle.right(1.0)
x_sign_new = math.copysign(1, turtle.xcor())
if(x_sign_new != x_sign):
times_y_crossed += 1
x_sign = x_sign_new
turtle.up() # pen up
turtle.end_fill() # end fill.
return


draw_circle(100, 10, 10)
turtle.goto(-20,10)
turtle.color('red')
turtle.dot(20)
turtle.goto(40,10)
turtle.dot(20)
turtle.pen(shown=False)
turtle.done()

你应该尝试自己完成作业的剩余部分.. ;)

关于python - 使用 Python turtle 制作没有 circle 函数的圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26580987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com