【问题标题】:Different lines of color in a hexagon六边形中不同的颜色线
【发布时间】:2020-09-17 22:06:48
【问题描述】:

我只是想知道如何在六边形的每一行上获得不同的颜色。下面我有所需的输出和输入。

立即输出 - Link to output right now

我想要的输出 - Link to output I want

import turtle as trtl

colors = ["#9c2921", "#cf8e04","#f5d905",]

#--------------------
num_sides = int(input("Enter the number of sides(Enter 6 to get the output of the real image): "))

if num_sides == 6:
  print("Desired artwork is displayed")

side_length = 25
circumradius = side_length


angle = 360/len(colors)
trtl.width(10)



for color in colors:
    trtl.color(color)
    trtl.pensize(10)
    for move_turtle in range(1):
      trtl.penup()
      trtl.sety(-circumradius)
      trtl.pendown()
      trtl.circle(circumradius, steps = num_sides)

      circumradius *= 2

trtl.hideturtle()


【问题讨论】:

  • 您在一次调用中绘制形状,因此它只能是一种颜色。对于单独的颜色,您需要分别绘制每一侧。
  • 这个问题与您也问过的this 非常相似。如果您最终再次访问 Stack Overflow,我会推荐 accepting cdlane's solution below

标签: python python-3.x turtle-graphics python-turtle


【解决方案1】:

奇怪的是,您的程序看起来像我为回答您之前的问题而编写的代码,该问题既未被接受也未被赞成。继续:

鉴于circle() 和基于粗笔绘制六边形的方法,我相信这是你能做的最好的:

import turtle
from itertools import cycle

COLORS = ["#9c2921", "#f5d905", "#cf8e04",]
NUM_SIDES = 6
SIDE_LENGTH = 50
PEN_WIDTH = 25

circumradius = SIDE_LENGTH

turtle.width(PEN_WIDTH)

color = cycle(COLORS)

for _ in range(4):

    turtle.penup()
    turtle.sety(-circumradius)
    turtle.pendown()

    for _ in range(NUM_SIDES):
        turtle.color(next(color))
        turtle.circle(circumradius, extent=360/NUM_SIDES, steps=1)

    circumradius += PEN_WIDTH*2

turtle.hideturtle()
turtle.done()

为了更接近目标图像,您需要将六边形(圆形)的各个部分绘制为梯形。

import turtle
from itertools import cycle

COLORS = ["#9c2921", "#f5d905", "#cf8e04",]
NUM_SIDES = 6
SIDE_LENGTH = 50
PEN_WIDTH = 30

circumradius = SIDE_LENGTH

turtle.width(1)
turtle.speed('fastest')  # because I have no patience

color = cycle(COLORS)

for _ in range(4):

    turtle.penup()
    turtle.sety(-circumradius)
    turtle.pendown()

    for _ in range(NUM_SIDES):
        turtle.color(next(color))
        turtle.circle(circumradius, extent=360/NUM_SIDES, steps=1)
        turtle.right(90)

        turtle.begin_fill()
        turtle.forward(PEN_WIDTH/2)
        turtle.right(120)
        turtle.forward(circumradius + PEN_WIDTH/2)
        turtle.right(120)
        turtle.forward(PEN_WIDTH/2)
        turtle.end_fill()

        turtle.begin_fill()
        turtle.forward(PEN_WIDTH/2)
        turtle.right(60)
        turtle.forward(circumradius - PEN_WIDTH/2)
        turtle.right(60)
        turtle.forward(PEN_WIDTH/2)
        turtle.end_fill()

        turtle.left(90)

    circumradius += PEN_WIDTH*2

turtle.hideturtle()
turtle.done()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-01
    • 2018-03-26
    • 2020-12-10
    • 2021-12-23
    • 2019-06-03
    • 2016-07-28
    • 2014-04-07
    • 1970-01-01
    相关资源
    最近更新 更多