pythonturtle:可以在fill命令中使用layers吗

2024-04-30 03:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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)

我的主要目的是让多边形填充不同的颜色,我知道如何做。问题在于填充的多边形一旦被填充其中的较大多边形被填充,就会被覆盖。我不确定如何解决此问题,因为要求是:

  • 较小的项目先被填充(在较大的项目内)。在
  • 较大的项目将在第二次填充,而在较小的项目填充的位置不填充。在

Tags: 项目代码图像图层size软件多边形side
1条回答
网友
1楼 · 发布于 2024-04-30 03:32:52

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

相关问题 更多 >