海龟:使用for循环在y轴上移动

时间:2019-02-09 22:16:09

标签: python turtle-graphics

因此,我正在尝试使用乌龟图形创建细分,并且我有一些代码应该可以工作,但显然不行。应该使用用户输入来确定十六进制的大小,然后通过将输入加倍并移至下一个十六进制,使用相同的输入来进行间距。它可以工作到一行六边形。但是,当我尝试通过在y坐标上添加大小* 2来使用相同的方法时(请参阅:in in range(20):loop)),它只会在同一行的十六进制上运行20次。如何获得y坐标以使用尺寸将下一个十六进制行放置在第一个十六进制行之下,依此类推?

这是上学的时间,但是我已经在这里呆了6个小时,而我仍然有4个小时的计算时间,所以我有点绝望。

谢谢!

#learned nifty * trick
from turtle import *

x = -500
y = 300
size = float(input("How large would you like the hexagons to be? 1-50" ))

#Should only need one turtle
#Need shapes - Picked hexagon

bgcolor("gray")
speed(10)
begin_fill()
color("red")

for a in range(20):
    penup()
    goto(x,y -(size * 2))
    pendown()
    for b in range(20):
        penup()
        forward(size*2)
        pendown()
            for c in range(6):
                forward(size)
                left(60)


end_fill()



#Need 3 elements
    #size of octogon
    #direction of octogon
    #coordinates of octogons

2 个答案:

答案 0 :(得分:0)

之所以会这样,是因为您没有在每次迭代中更新y

替换行:

goto(x,y -(size * 2))

具有:

y = y - (size * 2)
goto(x,y)

,并且以下六边形的线绘制在先前的六边形的下方。

答案 1 :(得分:0)

尽管您的某些常量很有意义:

.text

其他人很武断:

forward(size*2)
for c in range(6):
left(60)

并且应尽可能计算。如果不使用3的平方根,就无法使用六边形。尽管x = -500 y = 300 for a in range(20): for b in range(20): 是六边形的 width ,但它们的 height 确实是{{1 }}不是size * 2。让我们重写代码以避免任意数字,并尽可能地实际计算:

size * 3 ** 0.5

enter image description here

这很好,但是如果我们的目标是<细分>细分,那么我们可能需要稍微调整一下内容以实际平铺平面。上面的代码将需要修改五行:

size * 2

只有其中的最后一个是修改,而不是更改小常数。为了使瓷砖嵌套,我们需要引入 parity 的概念,以便每一行交替显示六边形的起始位置:

enter image description here