为了账号安全,请及时绑定邮箱和手机立即绑定

乌龟绘制六边形和六边形网格

乌龟绘制六边形和六边形网格

小唯快跑啊 2023-08-15 17:08:23
当前代码#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)我的目标是制作六边形网格图案,但我未能正确完成。我的第一个问题是,如果你运行代码,你会得到一个六边形,但顶部是平的,我无法让它让尖角到达顶部。其次,我尝试制作网格,但失败了,我不确定为什么我无法复制相同的六边形并将其克隆到另一个六边形旁边。我将会或应该有一个我要在下面获取的图像的文件。我得到的输出:我试图获得的输出:
查看完整描述

2 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

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

geekyTurtle.right(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()来绘制网格。


查看完整回答
反对 回复 2023-08-15
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

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


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

https://img1.sycdn.imooc.com//64db40d80001be8a04460429.jpg

查看完整回答
反对 回复 2023-08-15
  • 2 回答
  • 0 关注
  • 96 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信