首页 > 解决方案 > Python Turtle:是否可以在填充命令中使用图层

问题描述

我最近一直在开发一个用于创建分形图像的软件。但我意识到它要填充需要分层完成的形状,否则它会覆盖部分。这是我当前的代码:

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)

我的主要目的是让多边形用我理解的不同颜色填充。问题在于填充的多边形在其内部的较大多边形被填充后被覆盖。我不确定如何解决此问题,因为要求是:

标签: pythonrecursionturtle-graphicsfractals

解决方案


我们在 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()

我们必须先绘制较大的多边形,填充它,然后递归地绘制较小的多边形。

在此处输入图像描述


推荐阅读