【问题标题】:Turtle Mini-Project - Udacity - Python - Drawing / moving a shape around another shapeTurtle Mini-Project - Udacity - Python - 围绕另一个形状绘制/移动一个形状
【发布时间】:2016-06-30 09:52:03
【问题描述】:

我正在尝试制作一朵花,从它的大致中心画出整个圆周的黄线。

我遇到的问题是画一条线,到中心,然后再次画出相同的长度,但比上一条大 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()  

【问题讨论】:

    标签: python turtle-graphics


    【解决方案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() 方法会影响海龟的角度,因此我们必须对此进行调整:

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

    【讨论】:

    • 谢谢。我想出了一种方法来做我想做的事。很高兴看到相同的结果,但方式不同。我最终把它想象成一个图表,并且知道它有象限,所以我每次都把它调回一个新的象限。 def draw_feather(ink): for i in range(1,73): x = -4 y = -4 ink.goto(x,y) ink.forward(150) ink.left(5) x = x + 1 y = y + 1 ink.home()
    • 我不知道如何将它分开并使其格式正确,当然我的 5 分钟编辑窗口关闭了!
    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多