2016-02-23 69 views
0

我想寫一個函數來繪製嵌套正方形。圖片必須包含10個正方形。最外面的是200寬,每個內部是20更小。他們分別位於左側和前5位。它需要從reset()和hideturtle()開始並使用循環。由於龜需要向右移動5個像素,每個移動5個像素,因此我無法爲每個方形的繪圖設置定位。該函數應該返回一個如下所示的圖像。這是我到目前爲止有:Python Turtle:繪製左嵌套正方形的函數

def ForTheSquares(t, center, side): 
    xPt =center[0]+(side-(side-5)) 
    yPt = center[0]-(side-(side-5)) 
    t.up() 
    t.goto(xPt, yPt) 
    t.down 
    for i in range(4): 
     t.forward(side) 
     t.right(90) 


def NestSquares(t, center, side): 
    if side <1: 
     return 
    ForTheSquares(t, center, side) 
    NestSquares(t, center, side-20) 


def main(): 
    t=turtle.Turtle() 
    NestSquares(t, [0,0], 200) 

這是我的目標:

Nested Squares Goal

任何幫助將非常感謝!我對編碼和Python很陌生。

回答

0

看看你的出發代數座標:

xPt =center[0]+(side-(side-5)) 

這降低了

xPt = center[0] - 5 

...這是不是你想要的,對不對?

你有什麼理由爲什麼你在廣場的中心?除此之外,當繪製下一個較小的正方形時,您未能移動正方形的中心座標。

,豈不是更容易每次(非中心)使用左上角,然後用

ForTheSquares(t, old_corner, side) 
new_corner = (old_corner[0]+5, old_corner[1]+5) 
NestSquares(t, new_corner, side-20) 

當然復發,你還需要從西北角畫,但應該更容易。

這足以讓你感動嗎?

0

這是另一個程序變得簡單多了,如果你認爲它是一個衝壓問題,而不是一個繪製問題:

import turtle 

turtle.reset() # not necessary but a stated requirement 
turtle.hideturtle() 

turtle.shape("square") 
turtle.fillcolor("white") 

for side in range(200, 0, -20): 
    turtle.shapesize(side/20) 
    turtle.stamp() 
    x, y = turtle.position() 
    turtle.setposition(x - 5, y + 5) 

turtle.exitonclick() 

它從大運行於小型否則郵票將遮蔽彼此:

enter image description here