Я новичок в Python и изучаю графику с помощью черепахи. Я пытаюсь раскрасить нарисованную звезду, но цвет не заполнит каждую часть звезды.
Вот мой код:
def red_star():
f.penup()
f.goto(145,-130)
f.fillcolor("red")
f.begin_fill()
for i in range(5):
f.fd(100)
f.rt(144)
f.end_fill()
f.pendown()
red_star()
Вот что я получаю, когда запускаю программу:
@MarkTolonen Вы имеете в виду, что мне придется использовать функцию черепахи.trace ()?
Нет, я имею в виду, что вам придется рисовать внешние линии звезды, а не пересекать их.
В turtle.end_fill() задокументировано, что:
Будут ли заполнены области перекрытия для самопересекающихся многоугольников или нескольких фигур, зависит от графики операционной системы, типа перекрытия и количества перекрытий.
Нарисуйте внешний край звезды, чтобы он не был самопересекающимся многоугольником:
import turtle
def red_star(t, side):
t.fillcolor('red')
t.pencolor('black') # to highlight the lines
t.pendown()
t.width(3)
t.begin_fill()
for i in range(5):
t.fd(side)
t.left(72)
t.forward(side)
t.right(144)
t.end_fill()
t = turtle.Turtle()
s = t.screen
s.delay(0)
t.hideturtle()
t.penup()
red_star(t, 50)
s.exitonclick()
s.mainloop()
Выход:
Это алгоритм заполнения. Вам нужно будет обвести контур, чтобы заполнить всю звезду.