问题描述
我需要在右侧绘制图像,但是我的代码在左侧生成图像。如何解决此错误?我试图操纵s的值,但是这又使代码更加混乱。在x和y轴上,我的s都在增加,但是我们不希望这样。我们希望s的值保持相同直到一个点。
f()
解决方法
这是我的尝试-
import turtle
T=turtle.Turtle()
zoom = 50
T.speed(0)
turtle.tracer(0,0)
def drawshape(T,sidelength,s):
for x in range(s):
angle=360/s
T.pendown()
T.forward(sidelength)
T.right(angle)
T.penup()
def dualsaddle(T,n):
T.penup()
for x in range(-n // 2 + 1,n // 2 + 1):
T.setx(x * zoom)
for y in range(-n // 2 + 1,n // 2 + 1):
T.sety(y * zoom)
sidelength=10
if abs(x)==0 or abs(y)==0:
drawshape(T,3)
elif abs(x)==1 or abs(y)==1:
drawshape(T,4)
elif abs(x)==2 or abs(y)==2:
drawshape(T,5)
elif abs(x)==3 or abs(y)==3:
drawshape(T,6)
for i in range (7):
dualsaddle(turtle,7)
turtle.hideturtle()
turtle.update()
turtle.done()
,
此问题的关键是取多边形与X和Y轴的距离的min()
。这是您之前的minor change to my answer的"Drawing a pattern using turtle" question的一种解决方案:
from turtle import Screen,Turtle
DISTANCE = 50
def dualsaddle(t,n,minimum=3):
assert n % 2 == 1,"n should be odd"
t.penup()
for x in range(-n // 2 + 1,n // 2 + 1):
t.setx(x * DISTANCE)
for y in range(-n // 2 + 1,n // 2 + 1):
t.sety(y * DISTANCE)
t.pendown()
t.circle(10,steps=minimum + min(abs(x),abs(y)))
t.penup()
screen = Screen()
screen.tracer(False)
turtle = Turtle()
turtle.hideturtle()
turtle.pensize(3)
dualsaddle(turtle,7)
screen.tracer(True)
screen.exitonclick()