需要帮助把花上的每个花瓣都变成不同的颜色



如何让一朵花的每一片花瓣都有不同的颜色?

我试着这样做,但它导致每朵花瓣都是相同的颜色。我不知道怎样才能把每一片花瓣都变成不同的颜色。

import turtle
import random
not_done = False # guarantees the flower is completely drawn and won't be affected by subsequent button clicks
def set_up():
""" sets up the screen with a title and adds the mouse listener"""
wn = turtle.Screen()
wn.bgcolor("pink")
wn.title("Python Turtle Graphics: Flower Garden")
turtle.delay(0)
turtle.penup()
turtle.setpos(-200, 250)    # write a large title
turtle.color('green')
turtle.write('Flower Garden', font = ('Courier', 40, 'bold'))
turtle.onscreenclick(draw_flower)
turtle.hideturtle()
leaf = turtle.Turtle()
stem = turtle.Turtle()
def draw_leaf(fill, r, g, b):
""" draws 1 leaf and fills it if fill is true"""
# todo
leaf.hideturtle()
turtle.colormode(255)
for _ in range(8):
if fill:
leaf.begin_fill()
leaf.fillcolor(r, g, b)
for _ in range(45):
leaf.fd(1)
leaf.left(2)
leaf.lt(90)
for _ in range(45):
leaf.fd(1)
leaf.left(2)
if fill:
leaf.end_fill()
def draw_flower(x, y):
""" draws a flower at (x,y)"""
global not_done
if not_done:    # function does not execute if still drawing
return
not_done = True
# todo
stem.penup()
stem.setposition(x, y)
stem.width(5)
stem.pendown()
stem.hideturtle()
stem.right(90)
stem.forward(75)
stem.seth(0)

fill = random.randint(0, 1)
r = random.randrange(256)
g = random.randrange(256)
b = random.randrange(256)
for _ in range(8):
leaf.penup()
leaf.setpos(x, y)
leaf.pendown()
draw_leaf(fill, r, g, b)
leaf.rt(45)

not_done = False # finished drawing the flower - don't add any code below
def main():
set_up()
turtle.shape('turtle')
turtle.speed(0)
turtle.done()
main()

我被告知我可以使用循环,但是我能够完全理解它看起来像什么。这是我在这里的第一篇文章,很抱歉之前的垃圾邮件。

您需要更改每个leaf的颜色,即将颜色生成移动到循环中:

for _ in range(8):
fill = random.randint(0, 1)
r = random.randrange(256)
g = random.randrange(256)
b = random.randrange(256)
leaf.penup()
leaf.setpos(x, y)
leaf.pendown()
draw_leaf(fill, r, g, b)
leaf.rt(45)

最新更新