繁体   English   中英

python乌龟图形遍历颜色索引引发错误

[英]python turtle graphics iterating through color index throwing an error

我刚开始使用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位数过高,而我的红色1位数过低,然后又出错,但是我不确定如何解决。 我使用了>值并使它们更高(赶上5或250),但没有得到结果。

我完全愿意采用一种完全不同的方式来编写此代码,因为我确信我已经想出了解决该问题的最糟糕的方法。

对于初学者,您可能应该更改此设置:

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

对此:

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

我是个白痴。 我的bool变量对我的外部语句来说是局部的,一个遍历我的变量。 每个循环都会重置blueUp的值,并将索引再次降低1。通过将布尔值移到外部for循环之外,解决了该问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM