Python Turtle: возможно ли использовать слои в команде fill - PullRequest
0 голосов
/ 27 января 2019

Недавно я разрабатывал программное обеспечение, которое будет использоваться для создания фрактальных изображений.Но я понял, что для заливки фигур нужно будет делать слои, иначе он будет перезаписывать разделы.Вот мой текущий код:

import turtle
def CreatePolygon (turt, Side, Size):
    if Size <= 1:
        return
    else:
        #This will create a polygon of a certain size.
        #And iterate smaller polygons inside each polygon thus creating a fractal.
        for i in range (0, Side):
            turt.forward(Size)
            turt.left(360/Side)
            CreatePolygon(turt, Side, Size/(Side-1))

Size = 250
t = turtle.Turtle()
t.hideturtle()
t.speed(0)
#Calling The Function
CreatePolygon (t, 5, Size)

Мое главное намерение состоит в том, чтобы полигоны были заполнены разными цветами, что я понимаю, как это сделать.Проблема заключается в том, что закрашенный многоугольник будет перезаписан, как только залит большой внутри него.Я не уверен, как решить эту проблему, так как требования:

  • Меньший элемент заполняется первым (внутри большего элемента).
  • Большой элемент заполняется вторым, а не заполняетсяТам, где заполнен меньший предмет.

1 Ответ

0 голосов
/ 27 января 2019

У нас нет слоев в Python turtle, но мы все же можем добиться желаемого эффекта с небольшим дублированием и перестановкой кода:

from turtle import Screen, Turtle

COLORS = ['red', 'green', 'blue', 'magenta', 'yellow', 'cyan']

def CreatePolygon(turt, sides, size, color=0):
    if size <= 1:
        return

    # This will create a polygon of a certain size.
    turt.fillcolor(COLORS[color])

    turt.begin_fill()
    for _ in range(sides):
        turt.forward(size)
        turt.left(360 / sides)
    turt.end_fill()

    # And iterate smaller polygons inside each polygon thus creating a fractal.
    for _ in range(sides):
        turt.forward(size)
        turt.left(360 / sides)
        CreatePolygon(turt, sides, size / (sides - 1), color + 1)

screen = Screen()
turtle = Turtle(visible=False)

# Calling The Function
screen.tracer(False)
CreatePolygon(turtle, 5, 250)
screen.tracer(True)

screen.exitonclick()

Сначала нам нужно нарисовать большой многоугольник,заполните его, а затем рекурсивно нарисуйте меньшие многоугольники.

enter image description here

...