因此,我正在尝试使用乌龟图形创建细分,并且我有一些代码应该可以工作,但显然不行。应该使用用户输入来确定十六进制的大小,然后通过将输入加倍并移至下一个十六进制,使用相同的输入来进行间距。它可以工作到一行六边形。但是,当我尝试通过在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
答案 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
这很好,但是如果我们的目标是<细分>细分,那么我们可能需要稍微调整一下内容以实际平铺平面。上面的代码将需要修改五行:
size * 2
只有其中的最后一个是修改,而不是更改小常数。为了使瓷砖嵌套,我们需要引入 parity 的概念,以便每一行交替显示六边形的起始位置: