Заполните многоугольники в черепахе Python цветом в соответствии с размером - PullRequest
0 голосов
/ 27 января 2019

Случайные (?) Сгенерированные многоугольники, нарисованные Черепахой, должны быть заполнены цветами в соответствии с их размером, но не будут заполнять законченную форму. Вот код, который я уже написал.

import turtle, random

def drawpoly (sTurtle, sSides, sLength):
    for i in range (sSides):
        sTurtle.begin_fill()
        sTurtle.forward(sLength)
        sTurtle.left(360/sSides)
        sTurtle.end_fill()

sides = random.randint (3, 21)
size = random.randint (30, 200)

wn = turtle.Screen()
wn.bgcolor('black')

mac = turtle.Turtle()
mac.color('black')
mac.fillcolor()
mac.pensize(3)

for each in (size, sides):
    if each <= 99:
        mac.fillcolor('red')
    elif each <= 149:
        mac.fillcolor('white')
    elif each >149:
        mac.fillcolor('blue')

drawpoly(mac, sides, size)

В конце концов, большинство из того, что я пробую, в конечном итоге меняет только цвета линии Черепахи. Кажется, я не могу получить (полу-случайный) многоугольник, который рисует Mac (черепаха), чтобы заполнить цветом.

1 Ответ

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

Основная проблема, которую я обнаружил, - это код:

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()
...