我是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()
使用可變MAX_X記住的多邊形的最大x座標(它可以獲取與龜圖),然後用Y = 0且x = MAX_X用於下一多邊形開始etc..Alternatively第一繪製將每個多邊形的上半部分作爲一個不間斷的線條,然後返回到起始點,並將所有下半部分作爲另一條不間斷的線條繪製。 –
** 1)**你在python 2或python 3上做這個嗎? ** 2)**您可以使用'turtle.position()'方法獲得當前的烏龜座標。 ** 3)**將您的角度計算更改爲'angle = 360.0/num_sides',否則它會將多邊形的角度舍入爲邊數不是360的因子。例如,看看當前代碼發生了什麼告訴它繪製7邊多邊形。 ** 4)**您需要在多邊形之間使用'penup()'。 –
我正在做python 2x – ibonly01