2016-06-30 12 views
1

私は花を作ろうとしています。黄色の線がそのおおよその中心から引き出されています。タートルミニプロジェクト - Udacity - Python - 別の形の周りに形を描く/動かす

私が問題にしているのは、引き出し線を引っ張って中心に戻し、同じ長さをもう一度引き出しますが、前の線よりも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

文字通りあなたが説明した何をすべきか、あなたのコードの手直しです:

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

また、100はそれが10よりも大きいということを超えてturtle.speed()には何も意味しない - シンボリック引数を使用あなたの意図を明確にする。

+0

ありがとうございました。私は自分が望むことをする方法を考え出していました。 同じ結果を見るのは良いことですが、別の方法で行ってください。私はそれをグラフのように考えてしまい、四分円があることを知っていたので、毎回新しい四分円に戻しました。 'DEF draw_feather(インク):範囲内のiについて \t(1,73)= -4 \t \t ink.goto(x、y)は \t \tインク \t \t X = -4 \t \t Y .forward(150) \t \t ink.left(5) \t \t X = X + 1 \t \t Y = Y + 1 \t ink.home() ' – Rhys

+0

Iはseparaする方法を見つけ出すことができませんでしたそれを適切にフォーマットし、もちろん私の5分編集ウィンドウを閉じてください! – Rhys