Turtle Mini-Project - Udacity - Python - 在另一个形状周围绘制/移动形状

时间:2016-06-30 09:52:03

标签: python turtle-graphics

我正在尝试制作一朵花,在整个圆周上从其近似中心画出黄线。

我遇到的问题是画出一条线,去中心,再画出相同的长度,但比前一个大10度。

我无法理解如何做到这一点,线条要么反复弹跳,要么绕着侧面转动(例如当我制作尖头形状时)。

那么我如何让这条黄线回调,并逐渐羽化/获得那个尖头形状以不断地将自己画出360度?

这是我猜的第一个“真实”节目。我没有先前的编程经验,并且只开始这样做了几天。我在函数“draw_feather()”中使用的代码来自另一个站点,因为我不知道如何在一个圆圈中旋转三角形。

import turtle

def draw_fractal(ink):
    for i in range(1,37):
        ink.circle(50)
        ink.right(10)


def draw_feather(ink):
    while True:
        ink.forward(200)
        ink.left(170)
        if abs(ink.pos()) < 1:
            break

def draw_stem(ink):
    ink.goto(1,-400)
    ink.home()
    ink.goto(5,-400)
    ink.home()
    ink.goto(3,-400)

def Draw():
    window = turtle.Screen()
    window.bgcolor =("White")

    R = turtle.Turtle()
    R.shape("circle")
    R.color("Red")
    R.setpos(4,3)
    R.speed(100)

    G = turtle.Turtle()
    G.shape("circle")
    G.color("Green")
    G.setpos(3,3)
    G.speed(100)

    B = turtle.Turtle()
    B.shape("circle")
    B.color("Blue")
    B.setpos(2,3)
    B.speed(100)

    Stem = turtle.Turtle()
    Stem.shape("circle")
    Stem.speed(100)

    Feather = turtle.Turtle()
    Feather.shape("circle")
    Feather.speed(100)
    Feather.color("Yellow")

    draw_fractal(R)
    draw_fractal(G)
    draw_fractal(B)
    draw_feather(Feather)
    draw_stem(Stem)

    window.exitonclick()

Draw()  

1 个答案:

答案 0 :(得分:1)

下面是对您的代码进行的修改,以完全按照您的描述进行操作:

import turtle

def draw_flower(ink):
    ink.up()
    ink.home()
    for degrees in range(10, 370, 10):
        ink.down()
        ink.forward(200)
        ink.up()
        ink.home()  # resets angle to 0 degrees
        ink.left(degrees)  # so absolute angle, not relative

def draw_stem(ink):
    ink.goto(1, -400)
    ink.home()
    ink.goto(5, -400)
    ink.home()
    ink.goto(3, -400)

def Draw():
    window = turtle.Screen()
    window.bgcolor("white")

    stem = turtle.Turtle()
    stem.color("green")
    stem.speed("fast")

    draw_stem(stem)

    flower = turtle.Turtle()
    flower.color("yellow")
    flower.speed("fastest")

    draw_flower(flower)

Draw()

turtle.done()

只需转到屏幕中央,画一条黄线,重置到屏幕中央,稍微转动并重复。请注意,turtle.home()方法会影响乌龟的角度,因此我们必须对其进行调整:

enter image description here

此外,除了大于10之外,100对turtle.speed()没有任何意义 - 使用符号参数来表明你的意图。