Графика черепахи Python, повторяющая индекс цвета, выдает ошибку

Я только начал с графического модуля pythons Turtle, и я столкнулся с проблемой не с самой Turtle, я не думаю, а со стилем моего алгоритма. Я использую window.colormode(255), который великолепен и отлично работает, когда я итерирую от красного к синему в своей программе, увеличивая синюю переменную и уменьшая красную переменную один раз в каждом цикле.

У меня возникла проблема с моим фильтром, который должен изменить порядок инкрементатора/декрементатора цвета (я хочу вернуться от синего к красному, как только r = 0 и b = 255):

Вот код для рисования:

counter = 1
firstlength = 1
secondlength = 1
thirdlength = 1
fourthlength = 1
fifthlength = 1
colorList = [255,0,0] # r g b
f = 0 # index for colorlist
for i in listOfTurtles:
    i = turtle.Turtle()
    i.pencolor(colorList[0], colorList[1], colorList[2])
    i.speed(0) # no turn animations
    i.left(counter)
    i.forward(firstlength)
    i.left(15)
    i.forward(secondlength)
    i.left(15)
    i.forward(thirdlength)
    i.left(15)
    i.forward(fourthlength)
    i.left(15)
    i.forward(fifthlength)
    counter += 1
    firstlength += .1
    secondlength += .11
    thirdlength += .12
    fourthlength += .13
    fifthlength += .14

Вот проблема с повторением цвета пера (используя ответ ниже):

blueUp = True
    if blueUp == True:
        colorList[0] -= 1
        colorList[2] += 1
        if colorList[0] <= 1:
            blueUp = False
    else:
        colorList[0] += 1
        colorList[2] -= 1
        if colorList[2] <= 0:
            blueUp = True

однако этот фильтр, который я настроил, не переключает инкрементатор/декрементор цвета, когда это необходимо; что приводит к «ошибке неправильной последовательности цветов: (-1, 0, 256)

Итак, я знаю, что моя синяя 1 цифра увеличивается слишком высоко, а моя красная - слишком низко при первом проходе, а затем выдает ошибку, но я не уверен, как это исправить. Я играл со значениями > и сделал их выше (чтобы поймать около 5 или 250), но я не получаю результатов.

Я полностью открыт для совершенно другого способа написать это, поскольку я уверен, что придумал наихудший из возможных способов решения этой проблемы.


person ford    schedule 14.10.2013    source источник


Ответы (2)


Для начала вам, вероятно, следует изменить это:

if blueUp == False:
    if colorsList[2] > 0:

к этому:

if blueUp == False:
    if colorList[2] > 1:
person forefinger    schedule 14.10.2013

Я идиот. Моя логическая переменная была локальной для моего внешнего оператора for, который повторял мои i. в каждом цикле он сбрасывал значение blueUp и снова снижал индекс на 1. Проблема решена путем перемещения моего логического значения за пределы моего внешнего цикла for.

person ford    schedule 14.10.2013