Основная проблема, которую я обнаружил, - это код:
for i in range (sSides):
sTurtle.begin_fill()
sTurtle.forward(sLength)
sTurtle.left(360/sSides)
sTurtle.end_fill()
Вы пытаетесь заполнить линии вместо полигонов. То, что вы действительно хотите, это:
sTurtle.begin_fill()
for i in range (sSides):
sTurtle.forward(sLength)
sTurtle.left(360/sSides)
sTurtle.end_fill()
Этот код просто сбивает с толку:
for each in (size, sides):
if each <= 99:
mac.fillcolor('red')
elif each <= 149:
mac.fillcolor('white')
elif each >149:
mac.fillcolor('blue')
Вы говорите, что красите, основываясь на размере , но затем переопределяете это в конце и окрашиваете на сторон . Вот моя переделка вашего кода, которая решает обе проблемы:
from turtle import Screen, Turtle
from random import randint
def drawpoly(sTurtle, sSides, sLength):
sTurtle.begin_fill()
for _ in range(sSides):
sTurtle.forward(sLength)
sTurtle.left(360 / sSides)
sTurtle.end_fill()
sides = randint(3, 21)
size = randint(30, 200)
wn = Screen()
wn.bgcolor('black')
mac = Turtle()
mac.pensize(3)
if size < 100:
mac.fillcolor('red')
elif size < 150:
mac.fillcolor('white')
else:
mac.fillcolor('blue')
drawpoly(mac, sides, size)
wn.exitonclick()