2016-03-25 76 views
0

私は、Python turtle graphics(画像参照)を使用してランダムに同心円の六角形(各組で4〜10)を描く必要があります。私は、ランダムな六角形を描くことができますが、同心円状のものを作ることができない。同心円の六角形を描く方法は?

import turtle 
from random import randint 

window = turtle.Screen() 
window.bgcolor("yellow") 
brad= turtle.Turtle() 
brad.color("blue") 
window.colormode(255) 

def drawPoly(sideLen, noOfsides): 
    for i in range(noOfsides): 
     brad.forward(sideLen) 
     brad.left(360/noOfsides) 

for i in range(20): 
    sideLen = randint(20,150) 
    xpos = randint(-200,200) 
    ypos = randint(-200,200) 
    brad.pensize(randint(1,3)) 
    brad.pencolor(randint(1,255),randint(1,255),randint(1,255)) 
    brad.penup() 
    brad.setpos(xpos,ypos) 
    brad.pendown() 
    drawPoly(sideLen,6) 


window.exitonclick() 

ここで私は4〜10倍のための六角形の中に六角形を行い、その後、次の六角形に移動するにはどうすればよいimage

へのリンクがありますか?

答えて

1

mcveのコンセプトは、ここでの開発と投稿に適用されます。色、太さ、または線のスタイルを気にせずに、同心円の六角形を作る単純な関数またはコードブロックから始めます。

六角形の重要な点は、「半径」(コーナーの中心)がエッジの長さ(コーナーからコーナー)と同じことです。 (例えば、同心円の五角形はより難しく、三角形を必要とします。)x軸に2つの角が必要であるとします。中心がx、yの場合はx + e、yの場合は120の回転(0は右向き)。 x,y、半径辺の長さがedges、カメがtの場合、次のように動作します。

for edge in edges: 
    t.setpos(x+e, y) 
    t.setheading(120) 
    t.pendown() 
    for i in range(6): 
     t.forward(e) 
     t.left(60) 
    t.penup() 

EDIT:cdlaneによるコメントのおかげでsetangleをsetheadingに置き換えます。

+0

あなたが望む機能は 'setheading()'です – cdlane

+0

@cdlane、ありがとう、コードに編集 –

関連する問題