2016-12-12 24 views
-1

「どのように考えるか...」という本を読むと、私は運動4.9.2に固執しました。同心円を描く

質問は:「これを描画するプログラムを書くと仮定し、最も内側の正方形が側につき20個の単位であり、各連続した四角はその中に1よりも、側面ごとに、20個の単位大きいです。」

enter image description here

次のコードで、私が今まで持ってどこまで表します

import turtle 
wn = turtle.Screen() 
wn.bgcolor("lightgreen") 
tess = turtle.Turtle() 

def draw_square(t,size): 
    for i in range(4): 
     tess.forward(size) 
     tess.left(90) 

size = 20 
for j in range(3): 
    tess.pensize(3) 
    draw_square(tess,size) 
    size = size + 20 
    tess.penup() 
    tess.goto(-20, -20) 
    tess.pendown() 

wn.mainloop() 

誰かがとても親切にしてくれ右方向を示すことができますしてください?

ありがとうございます!

SWEN

+0

すごい迫力、この画像は私がめまいになります... – mattmilten

+2

は、それはあなたのように見えます各広場の別の場所で始める必要があるという事実だけが失われています。 – Barmar

+0

あなたは何を得ていますか? –

答えて

1

は、問題はここにある:

tess.goto(-20, -20) 

次の2つの問題を抱えています。まず、各正方形が20単位大きく、各正方形を(-20, -20)でオフセットすると、すべての正方形が1つの角を共有します。代わりに正方形の角を(-10, -10)でオフセットして、内側の四角形がすべての面で10単位だけオフセットされるようにします。

.goto(x, y)は、オフセットではなく絶対位置を設定します。あなたがオフセットに基づいて、新たな絶対位置を計算する必要があるオフセットに移動するには:あなたが立ち往生しているとき

tess.goto(tess.xcor()-10, tess.ycor()-10) 

それとも

tess.goto(tess.pos() + (-10, -10)) 
0

は時々、タートルグラフィックスとの良好なアプローチが考えることです正方形の外側にある。我々はひどく描かれた同心円望ましい結果を考慮するならば、問題はに削減:

from turtle import Turtle, Screen 

HYPOTENUSE = (2 ** 0.5)/2 

screen = Screen() 
screen.bgcolor("lightgreen") 

tess = Turtle() 
tess.pencolor("red") 
tess.setheading(45) 
tess.width(3) 

for radius in range(20, 20 * 5 + 1, 20): 
    tess.penup() 
    tess.goto(radius/2, -radius/2) 
    tess.pendown() 
    tess.circle(radius * HYPOTENUSE, steps=4) 

screen.exitonclick() 

OUTPUT

enter image description here