我的程序使用turtle
绘制圆圈目标:
import turtle
def origin_circle(turtle, radius):
turtle.penup()
turtle.goto(0, -radius)
turtle.pendown()
turtle.circle(radius)
for radius in range(100, 200, 10):
origin_circle(turtle, radius)
代码生成一条移动曲线,但我希望立刻绘制圆形。
答案 0 :(得分:0)
circle()
方法绘制一个圆圈,但dot()
方法会标记一个圆圈。但是,dot()
方法没有单独的行和填充概念,并且往往会覆盖自身,所以我们必须小心处理它:
import turtle
def origin_circle(turtle, radius):
turtle.dot(radius + 2, 'black')
turtle.dot(radius, 'white')
for radius in range(200, 0, -40):
origin_circle(turtle, radius)
turtle.hideturtle()
turtle.mainloop()
或者,我们可以自己标记圆形游标:
import turtle
def origin_circle(turtle, radius):
turtle.shapesize(radius)
turtle.stamp()
turtle.shape('circle')
turtle.color('black', 'white')
for radius in range(10, 0, -2):
origin_circle(turtle, radius)
turtle.hideturtle()
turtle.mainloop()
但这并不能令人满意:
当然,我们总是可以欺骗并使用turtle.speed('fastest')
,或者更好的是,完全取消追踪:
import turtle
def origin_circle(turtle, radius):
turtle.penup()
turtle.sety(-radius)
turtle.pendown()
turtle.circle(radius, steps=90)
turtle.tracer(False)
for radius in range(20, 120, 20):
origin_circle(turtle, radius)
turtle.hideturtle()
turtle.tracer(True)
turtle.mainloop()
但结果仍然不如turtle.dot()
方式好,即使你提升了steps
的{{1}}参数:
第一个代码如何在每条曲线的顶部添加一个箭头,一个 在每条曲线的下方?
修改我的第三个例子比较容易,因为我们可以更容易地绘制半圆并标记光标。我使用自定义光标进行圆圈对齐:
turtle.circle()
答案 1 :(得分:0)
import turtle
ab=turtle.Turtle()
ab.speed(0)
import turtle
def zielscheibe(ringe=10):
if ringe<1 or ringe>1000:
ab.write('Bitte eine Zahl zwischen 1 und 1000 eingeben')
return
ab.pu()
ab.goto(300,0)
ab.seth(90)
x=300/ringe
for n in range(ringe):
ab.pd()
if n ==ringe-1:
ab.color('black')
elif n %2==0:
ab.color('red')
else:
ab.color('white')
ab.begin_fill()
ab.circle(300-x*n)
ab.end_fill()
ab.pu()
ab.left(90)
ab.fd(x)
ab.right(90)
zielscheibe(10)
turtle.mainloop()