2013-10-14 3 views
0

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

Я бегу в проблему с моим фильтром, который должен полностью изменить порядок цвета инкрементор/decrementor (я хочу, чтобы перейти от синего назад к красному когда г = 0 и б = 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 

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

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

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

ответ

0

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

0

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

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

к этому:

if blueUp == False: 
    if colorList[2] > 1: