我正在尝试编写一个绘制嵌套方块的函数。图片必须包含10个正方形。最外面是200宽,每个内部小20。它们分别位于左侧和前5位。它需要从reset()和hideturtle()开始并使用循环。我在为每个方块的绘图设置定位方面遇到了麻烦,因为乌龟需要向右移动5个像素,向下移动5个像素。该函数应返回如下图所示的图像。这就是我到目前为止所做的:
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)
这是我的目标:
非常感谢任何帮助!我是编码和Python的新手。
答案 0 :(得分: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)
当然,你还需要从那个NW角画画,但这实际上应该更容易。
这足以让你感动吗?
答案 1 :(得分: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()
它从大到小,否则邮票会相互模糊: