2015-07-11 102 views
0

我是Python編程的新手,我有一個任務來開發一個簡單的程序,繪製n個邊的多邊形m次,使得邊的最左邊下一個多邊形觸摸上一個多邊形的最右邊。下面的代碼根據用戶輸入的邊數和多邊形應顯示的次數繪製一個多邊形。如何繪製n個邊的多邊形,m次

import turtle 

def myTurtle(): 
    num_side = raw_input("Enter the number of sides: ") 
    num_shap = raw_input("Enter the number of shapes: ") 
    num_sides = int(num_side) 
    num_shape = int(num_shap) 
    window = turtle.Screen() 
    window.bgcolor("red") 

    polygon = turtle.Turtle() 
    polygon.penup() 
    polygon.goto(-200, 200) 
    polygon.pendown() 
    side_length = 60 
    angle = 360.0 // num_sides 
    n = 0 

    for j in range(0, num_shape): 
    polygon.forward(side_length) 
    for i in range(num_sides): 
     polygon.pencolor("black") 
     polygon.forward(side_length) 
     polygon.right(angle) 
    n += side_length  
window.exitonclick() 

myTurtle() 

我現在面臨的問題是讓下一個多邊形轉到上一個多邊形的旁邊。


我已經能夠拿出一個更好,但仍然沒有一個完美的解決方案。只是一些相互接觸的多邊形。我怎樣才能做到這一點?

import turtle, math 

def find_lenth(radius, sides): 
    angle = float(360/sides) 
    otherangle = float((180 - angle)/2) 
    radangle = float(angle * (math.pi/180)) 
    radangle2 = float(otherangle * (math.pi/180)) 
    angles = math.sin(radangle)/math.sin(radangle2) 
    lenth = radius * angles 
    return lenth  

def myTurtle(): 
    num_side = raw_input("Enter the number of sides: ") 
    num_shap = raw_input("Enter the number of shapes: ") 
    num_sides = int(num_side) 
    num_shape = int(num_shap) 
    window = turtle.Screen() 
    window.bgcolor("red") 
    polygon = turtle.Turtle() 
    radius = 60 
    side_length = find_lenth(radius, num_sides) 
    angle = 360.0 // num_sides 
    delta = radius*2 #this value you must count 
    colors = ['blue','white','black','green'] 
    for i in range(num_shape): 
    polygon.penup() 
    polygon.goto(-400+delta*i, 200) 
    polygon.pendown() 
    polygon.pencolor(colors[i%4]) 
    n = 0 
    for j in range(num_sides): 
     polygon.forward(side_length) 
     polygon.right(angle) 
    window.exitonclick() 

if __name__ == '__main__': 
    myTurtle() 
+0

使用可變MAX_X記住的多邊形的最大x座標(它可以獲取與龜圖),然後用Y = 0且x = MAX_X用於下一多邊形開始etc..Alternatively第一繪製將每個多邊形的上半部分作爲一個不間斷的線條,然後返回到起始點,並將所有下半部分作爲另一條不間斷的線條繪製。 –

+0

** 1)**你在python 2或python 3上做這個嗎? ** 2)**您可以使用'turtle.position()'方法獲得當前的烏龜座標。 ** 3)**將您的角度計算更改爲'angle = 360.0/num_sides',否則它會將多邊形的角度舍入爲邊數不是360的因子。例如,看看當前代碼發生了什麼告訴它繪製7邊多邊形。 ** 4)**您需要在多邊形之間使用'penup()'。 –

+0

我正在做python 2x – ibonly01

回答

-1

此代碼會繪製一些多邊形。爲了將指針移動到正確的像素值,您需要對其進行計數。

import turtle 

def myTurtle(): 
    num_side = raw_input("Enter the number of sides: ") 
    num_shap = raw_input("Enter the number of shapes: ") 
    num_sides = int(num_side) 
    num_shape = int(num_shap) 
    window = turtle.Screen() 
    window.bgcolor("red") 
    polygon = turtle.Turtle() 
    side_length = 60 
    angle = 360.0 // num_sides 
    delta = side_length*3 #this value you must count 
    colors = ['blue','white','black','green'] 
    for i in range(num_shape): 
     polygon.penup() 
     polygon.goto(-400+delta*i, 200) 
     polygon.pendown() 
     polygon.pencolor(colors[i%4]) 
     n = 0 
     for j in range(num_sides): 
      polygon.forward(side_length) 
      polygon.right(angle) 
    window.exitonclick() 

if __name__ == '__main__': 
    myTurtle() 
+0

你的多邊形沒有觸及。此外,你的角度計算是不正確的。 –

+0

多邊形不接觸。再次說明一點,如果用戶輸入5個邊數和2個多邊形數。它應該繪製5邊的多邊形,第二個多邊形應該割炬的第一個多邊形的邊緣。 – ibonly01

+0

這是作家的角度。而且我寫了一些必須計算的內容以使其觸及(接下來是數學問題,而不是python)。我可以計算它,但我認爲作者要求python幫助,而不是數學。 – zveryansky