3
import turtle
w=turtle.Screen()

def Tri(t, order, size):

    if order==0:
        t.forward(size)
        t.left(120)
        t.forward(size)
        t.left(120)
        t.forward(size)
        t.left(120)

    else:
        t.pencolor('red')
        Tri(t, order-1, size/2, color-1)
        t.fd(size/2)
        t.pencolor('blue')
        Tri(t, order-1, size/2, color-1)
        t.fd(size/2)
        t.lt(120)
        t.fd(size)
        t.lt(120)
        t.fd(size/2)
        t.lt(120)
        t.pencolor('green')
        Tri(t, order-1, size/2,color-1)
        t.rt(120)
        t.fd(size/2)
        t.lt(120)

誰でもこの問題を解決できますか?
次のような特定の深さで色を持つシェルピンスキー三角形が必要です。

特定の深さで三角形の色を変更する方法がわかりません。
前もって感謝します!

4

2 に答える 2

2

私はあなたがこれをすでにほとんど解決したと思います。あなたの再帰呼び出しはcolor、再帰の各下位レベルに値を渡そうとしています。それを機能させるために必要なのは、それを追加のパラメーターとして関数に追加し、色を変更するコマンドがゼロであることを条件とすることです (指定されたレベルに下がったことを示します)。

Python のような疑似コードでは:

def Tri(t, order, size, color):
    if order == 0:
         # draw a triangle (maybe doing coloring of the sides if color == 0 too?)

    else:
         if color == 0:
             # set first color

         Tri(t, order-1, size/2, color-1)

         if color == 0:
             # set second color

         # move to next position

         Tri(t, order-1, size/2, color-1)

         if color == 0:
             # set third color

         # move to next position

         Tri(t, order-1, size/2, color-1)

         # move to end position

三角形が適切に描画された後、移動コマンドが三角形のエッジの一部の色を変更しないようにするなど、解決すべき小さな問題が他にもあるかもしれません。タートルグラフィックスは久しぶりなので詳細はお任せします。

于 2012-12-02T05:40:08.260 に答える