0

当前代码

#import the turtle modules  
import turtle 
  
#Start a work Screen 
ws=turtle.Screen() 
  
#Define a Turtle Instance 
geekyTurtle=turtle.Turtle() 
  
#executing loop 6 times for 6 sides 
for i in range(6): 
    
  #Move forward by 90 units  
  geekyTurtle.forward(90) 
    
  #Turn left the turtle by 300 degrees 
  geekyTurtle.left(300)

我的目标是制作一个六边形网格图案,但我没有正确地做到这一点。我的第一个问题是,如果您运行代码,您会得到一个六边形,但顶部是平的,我无法让尖角位于顶部。其次,我尝试制作网格但它失败了,我不确定为什么我无法复制相同的六边形并将其克隆到另一个旁边。我将或应该有一个我要在下面查找的图像文件。

我得到的输出:

我试图得到的输出:

4

2 回答 2

2
  1. 在进入循环之前,转动 30 度。

geekyTurtle.right(30)

  1. 为了将它的克隆放在旁边,只需将海龟放到新位置并再次绘制形状:

    for i in range(6):
      geekyTurtle.forward(90)
      geekyTurtle.left(300)
    geekyTurtle.up()
    geekyTurtle.goto(90 * 3 ** .5, 0)
    geekyTurtle.down()
    for i in range(6):
      geekyTurtle.forward(90)
      geekyTurtle.left(300)
    

把它放在一个循环中,让它超过两次

  1. 您可以使用 and 和 and 的思想.up().goto(x, y)绘制.down()网格。
于 2020-09-18T15:54:00.890 回答
0

似乎这是一个递归可以以类似分形的方式简化的问题。初始六边形的每一边本身就是一个六边形,依此类推,填充可用空间:

from turtle import Screen, Turtle

SIDE = 75  # pixels

def hexagon(side, depth):
    if depth > 0:
        for _ in range(6):
            turtle.forward(side)
            turtle.right(60)
            hexagon(side, depth - 1)
            turtle.left(120)

screen = Screen()
screen.tracer(False)  # because I have no patience

turtle = Turtle()
turtle.penup()
turtle.width(2)
turtle.sety(-SIDE)  # center hexagons on window
turtle.pendown()
turtle.left(30)  # optional, orient hexagons

hexagon(SIDE, depth=6)  # depth depends on coverage area

turtle.hideturtle()
screen.tracer(True)
screen.exitonclick()

在此处输入图像描述

于 2020-09-18T20:19:15.987 回答