根据大小用颜色填充Python turtle中的多边形

2024-05-29 04:05:15 发布

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

随机(?)海龟绘制的多边形需要根据其大小填充颜色,但不会填充完成的形状。 这是我已经写过的代码。在

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(乌龟)画的(半随机)多边形来填充颜色。在


Tags: forsize颜色macrandom多边形each海龟
1条回答
网友
1楼 · 发布于 2024-05-29 04:05:15

我发现的主要问题是以下代码:

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

你试着填充线条而不是多边形。你真正想要的是:

^{pr2}$

这段代码很容易混淆:

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

相关问题 更多 >

    热门问题