0

私は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 をキャッチするため) が、結果が得られません。

私は、この問題を解決するための最悪の方法を考え出したと確信しているので、これを書くためのまったく異なる方法に対して完全にオープンです.

4

2 に答える 2

0

まず、おそらくこれを変更する必要があります。

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

これに:

if blueUp == False:
    if colorList[2] > 1:
于 2013-10-14T20:04:33.560 に答える