Python 绘制六边形和六边形网格

Python 绘制六边形和六边形网格,python,python-turtle,Python,Python Turtle,当前代码 #导入海龟模块 进口海龟 #启动工作屏幕 ws=turtle.Screen() #定义一个海龟实例 geekyTurtle=海龟。海龟() #对6个边执行6次循环 对于范围(6)中的i: #向前移动90个单位 吉基乌龟,前进(90) #把乌龟左转300度 极客龟。左(300) 我的目标是制作一个六边形网格图案,但我没有做好。我的第一个问题是,如果你运行代码,你会得到一个六边形,但是顶部是平的,我不能让它得到尖角,以达到顶部。第二,我尝试制作网格,但失败了,我不知道为什么我无法复制同一

当前代码

#导入海龟模块
进口海龟
#启动工作屏幕
ws=turtle.Screen()
#定义一个海龟实例
geekyTurtle=海龟。海龟()
#对6个边执行6次循环
对于范围(6)中的i:
#向前移动90个单位
吉基乌龟,前进(90)
#把乌龟左转300度
极客龟。左(300)
我的目标是制作一个六边形网格图案,但我没有做好。我的第一个问题是,如果你运行代码,你会得到一个六边形,但是顶部是平的,我不能让它得到尖角,以达到顶部。第二,我尝试制作网格,但失败了,我不知道为什么我无法复制同一个六边形并将其克隆到另一个六边形旁边。我将或应该有一个文件的图像,我要在下面

我得到的输出:

我试图获得的输出:

  • 进入环路前,旋转30度
  • geekyottle.右(30)

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

    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)
    
  • 将其放入一个循环中,使其保持两次以上

  • 您可以使用
    .up()
    .goto(x,y)
    .down()
    的思想来绘制网格
  • 进入环路前,旋转30度
  • geekyottle.右(30)

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

    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)
    
  • 将其放入一个循环中,使其保持两次以上

  • 您可以使用
    .up()
    .goto(x,y)
    .down()
    的思想来绘制网格

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

    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()
    

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

    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()
    

    好的,我会的,给我大约5分钟,你会看到它倾斜六边形,只需在开始处添加一个
    geekyottle。右(30)
    。另外,
    right(60)
    left(300)
    快一些,好的,给我5分钟,你应该看到它倾斜六边形,只需在开始处添加一个
    geekyottle.right(30)
    。另外,
    right(60)
    left(300)
    Yo要快一些,非常感谢你,我现在可以运行我的代码,看看我可以在我的上更改什么。Yo非常感谢你,我现在可以运行我的代码,看看我可以在我的上更改什么