2017-04-14 82 views
0

我是新來的龜圖形在Python中,我遇到了一些特定問題的問題。我正試圖生成一個使用循環從圓圈中心繪製隨機鋸齒線的while星形。如何使用Python中的龜圖形生成隨機星?

每行應有250的距離。我在循環內使用penuppendownsetpos命令來繪製這些隨機行,並且每行應該是隨機顏色。

這裏就是我希望能產生一個想法:random star

下面的代碼我到目前爲止:

# tg_random_star.py 

from random import randrange 
from turtle import * 

MAX_ANGLE = 30 

def jaggedLine(turtle, pieces, pieceLength): 

    for i in range(pieces): 
     turtle.forward(pieceLength) 
     r = randrange(-MAX_ANGLE, MAX_ANGLE + 1) 
     turtle.right(r) 

def jumpToCenter(turtle): 
    turtle.penup() 
    turtle.setpos(0, 0) 
    turtle.pendown() 

def randomColor(turtle): 
    turtle.colormode(255) 
    r = randrange(255) # red component of color 
    g = randrange(255) # green component 
    b = randrange(255) # blue component 

    turtle.pencolor(r, g, b) 

def main(): 
    colormode(255) 
    t = Turtle() 
    jaggedLine(t, 10, 30) 
    jumpToCenter(t) 
    jaggedLine(t, 10, 30) 

if __name__ == "__main__": 
    main() 

目前,它產生2行,但turtle.pencolor(r, g, b)colormode(255)唐」因爲兩條線都是黑色的,所以似乎工作正常。任何想法爲什麼這些線不是顏色?

與其使用for i in range(pieces)繪製基於段數的線條,我怎樣才能使用while循環繪製每個距離爲250的鋸齒線?換句話說,我希望每條線在距離中心畫一條新線之前的距離爲250。

(也許我可以用xcor和方法來尋找烏龜的位置,然後計算使用的距離公式的距離?)

def distance(p0, p1): 
return math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2)` 

任何幫助或解釋,將不勝感激,謝謝。

回答

0

任何想法爲什麼這些行不是顏色?

,一個人的簡單,那是因爲你從來沒有真正叫randomColor()

,而不是範圍使用我(件)來繪製的上段的數量根據 線,我該如何使用一個while循環畫出鋸齒狀的 行,每個行的距離爲250?

在這裏,我們可以利用利用不足的.distance()龜的方法告訴我們離中心有多遠。這是直線距離,而不是路徑行進的距離,這似乎符合您的目標說明:

from random import randrange 
from turtle import Turtle, Screen 

MAX_ANGLE = 30 
MAX_DISTANCE = 250 

def jaggedLine(turtle, pieceLength): 
    randomColor(turtle) 

    while turtle.distance(0, 0) < MAX_DISTANCE: 
     angle = randrange(-MAX_ANGLE, MAX_ANGLE + 1) 
     turtle.right(angle) 
     turtle.forward(pieceLength) 

def jumpToCenter(turtle): 
    turtle.penup() 
    turtle.home() 
    turtle.pendown() 

def randomColor(turtle): 
    r = randrange(255) # red component of color 
    g = randrange(255) # green component 
    b = randrange(255) # blue component 

    turtle.pencolor(r, g, b) 

def main(): 
    s = Screen() 
    s.colormode(255) 
    t = Turtle() 
    t.pensize(2) 
    t.speed('fastest') # because I have no patience 

    for angle in range(0, 360, 2): 
     jumpToCenter(t) 
     t.setheading(angle) 
     jaggedLine(t, 30) 

    t.hideturtle() 

    s.mainloop() 

if __name__ == "__main__": 
    main() 

輸出

enter image description here