Изменение цвета и заполнения черепахи Python - PullRequest
1 голос
/ 29 мая 2019

Этот код рисует форму, когда пользователь вводит количество квадратов для рисования и размер этих квадратов.Я хочу, чтобы цвет менялся для каждого нарисованного квадрата и чтобы он был заполнен. Но код застрял:

import turtle
t = turtle.Turtle()

size = int(input("How long do you want the side lengths to be?"))
number = int(input("How many squares do you want in the image?"))
red = 40.0
blue = 30.0
green = 10.0

def square (size):
 count = 0
 while count < 4:
  t.forward(size)
  t.right(90)
  count = count + 1

def drawing(number):
  times = 0
  while times < number:
    t.pencolor(red, blue, green)
    t.fillcolor(red, blue, green)
    t.begin_fill()
    square(size)
    t.right(360/number)
    if t.filling():
      t.pensize(5)
    else:
      t.pensize(3)
    t.color()
    (red + 1, blue + 1, green + 1)
    times = times + 1

drawing(number)

1 Ответ

0 голосов
/ 29 мая 2019

Есть несколько проблем с вашим кодом, основная из которых - вы используете неправильную цветовую модель.По умолчанию цвета черепахи задаются как значения с плавающей запятой в диапазоне от 0,0 до 1,0.Однако, если вы хотите использовать значения, подобные тем, которые есть в вашем коде, мы можем переключить это с помощью colormode(255), который допускает значения от 0 до 255.

Далее, begin_fill() должен иметь соответствующий end_fill(), которыйвам не хватает.Цвета указаны в порядке (red, green, blue), а не (red, blue, green).Кроме того, если вы установите для pencolor() и fillcolor() один и тот же цвет, вы можете просто использовать один вызов color().

Наконец, эти два оператора ничего не делают:

t.color()
(red + 1, blue + 1, green + 1)

относительно вашего кода.Вы должны переосмыслить их.Ниже моя переделка вашего кода, которая решает вышеуказанные проблемы и некоторые другие детали:

from turtle import Screen, Turtle

def square(size):
    count = 0

    if turtle.filling():
        turtle.pensize(5)
    else:
        turtle.pensize(3)

    while count < 4:
        turtle.forward(size)
        turtle.right(90)
        count += 1

def drawing(number):
    red = 30
    green = 10
    blue = 20

    times = 0

    while times < number:
        turtle.color(red % 255, green % 255, blue % 255)

        turtle.begin_fill()
        square(size)
        turtle.end_fill()

        turtle.right(360 / number)

        red, green, blue = red + 20, green + 30, blue + 10
        times += 1

size = int(input("How long do you want the side lengths to be? "))
number = int(input("How many squares do you want in the image? "))

screen = Screen()
screen.colormode(255)

turtle = Turtle()
turtle.speed('fastest')  # because I have no patience

drawing(number)

screen.exitonclick()

enter image description here

...