2016-04-28 4 views
0

Ich muss ein Programm schreiben, das ein Muster aus Kreisen zeichnet, die sich an den oberen Rand des Fensters bewegen und kleiner werden. Wie, Das Muster beginnt mit dem größten Kreis und verringert dann den Radius um einen Schrumpfwert, bis der Radius sehr klein wird (wie 5 px).Erstellen einer Schildkröte, die Kreise zeichnet

Meine Anforderungen für das Minimum sind vollständig, aber um es vollständig zu beenden, muss ich X- und Y-Positionen anfordern und den Radius und den Schrumpfwert anfordern. Weiß jemand etwas darüber?

Könnte auch hinzufügen, das ist meine zweite Version des Codes. Die erste Version ging nach oben. Es muss steigen. Dieser geht unter. Ich habe keine Ahnung, was daran falsch ist.

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() 

Antwort

0

Ihre Schildkröte geht in die falsche Richtung, weil Sie turtle.forward verwenden. Verwenden Sie stattdessen turtle.backward.

Verwenden Sie statt for x in range(1, 500, 10) auch for x in reversed(range(1, 500, 10)), so dass der Radius abnimmt anstatt zu steigen.

Zuletzt, zum "Anfordern" der Werte, meinst du sie auszudrucken? Wenn ja, ist der Radius i ist, ist der Schrumpfwert der dritte Wert von range(start, stop, step) und die X- und Y-Werte können mit turtle.position() gefunden werden, die einem Vector2D zurückgibt (im Wesentlichen ein Tupel) von (X, Y)

Hier ist eine modifizierte Version Ihres code:

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