2016-04-28 20 views
0

ウィンドウの上部に移動して小さくなる円のパターンを描くプログラムを書く必要があります。同様に、パターンは最大円から始まり、半径が非常に小さくなるまで(5 pxのように)、縮小値だけ半径を減少させます。円を描くカメを作成する

私の最小要件は完全ですが、完全に終了するにはXとYの位置を要求し、半径と縮小値を要求する必要があります。誰でもこれについて何か知っていますか?

これもコードの2番目のバージョンです。最初のバージョンが上がった。それは上がる必要があります。これは落ちる。私は何が間違っているのか分かりません。

import turtle 

turtle.penup() 

for i in range(1, 500, 10): 
    turtle.right(90)  # Face South 
    turtle.forward(2 * i) # Move two radiuses down 
    turtle.right(270)  # Back to start heading 
    turtle.pendown()  # Put the pen back down 
    turtle.circle(i)  # Draw a circle 
    turtle.penup() 

答えて

0

turtle.forwardを使用しているため、あなたのカメは間違っています。代わりにturtle.backwardを使用してください。

for x in range(1, 500, 10)の代わりに、for x in reversed(range(1, 500, 10))を使用すると、半径が増加するのではなく減少するようにします。

最後に、値を「要求する」ために、それらを印刷することを意味しますか?もしそうであれば、半径iで、収縮値はrange(start, stop, step)の第3の値とXとYの値である(X, Y)

のVector2D(本質的にタプル)を返す、turtle.position()を発見することができる。ここで、あなたの修正版ですコード:

import turtle 

turtle.penup() 
turtle.sety(-400) 

for i in reversed(range(1, 90, 10)): 
    print("Radius: {radius}".format(radius=i)) 
    print("X: {0}, Y: {1}".format(*turtle.position())) 
    print("Shrink value: 10") 
    turtle.pendown()  # Put the pen back down 
    turtle.circle(i)  # Draw a circle 
    turtle.penup() 
    turtle.right(90)  # Face South 
    turtle.backward(2 * i) # Move two radiuses down 
    turtle.right(270)  # Back to start heading