【问题标题】:draw a circles target using python使用python绘制一个圆圈目标
【发布时间】:2018-10-18 16:41:15
【问题描述】:

这是我的程序使用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)

代码制作了一条移动曲线,但我希望立即绘制圆。

【问题讨论】:

标签: python python-3.x turtle-graphics


【解决方案1】:

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() 方法那么好,即使你提高了turtle.circle()steps 参数:

对于第一个代码如何在每条曲线的顶部添加一个箭头,一个 在每条曲线的下方?

修改我的第三个示例更容易,因为我们可以更轻松地绘制半圆并标记光标。我正在使用自定义光标跨圆圈对齐箭头:

import turtle

def origin_circle(turtle, radius):
    turtle.penup()
    turtle.sety(-radius)
    turtle.pendown()

    turtle.stamp()
    turtle.circle(radius, extent=180, steps=45)
    turtle.stamp()
    turtle.circle(radius, extent=180, steps=45)

turtle.addshape("pointer", ((0, 0), (5, -4), (0, 4), (-5, -4)))
turtle.shape("pointer")

turtle.tracer(False)

for idx, radius in enumerate(range(20, 120, 20), start=0):
    origin_circle(turtle, radius)

turtle.hideturtle()

turtle.tracer(True)

turtle.mainloop()

【讨论】:

  • 第一个代码如何在每条曲线的顶部添加一个箭头,在每条曲线的下方添加一个箭头?
  • @ShAlzoubi,我需要看一个例子,因为我不明白你的描述。
  • @ShAlzoubi,我添加了一个这样的例子。
  • 我们能不能把箭头的方向改成顺时针方向!!
  • @ShAlzoubi,是的。绝对。
【解决方案2】:
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()

【讨论】:

    猜你喜欢
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2014-12-30
    • 1970-01-01
    相关资源
    最近更新 更多