2014-03-04 46 views
1

參見上面的描述遞歸繪製

但是我的代碼添加到圈子中的顏色不正確的數組:

我有一個彩色baseColor,其中包含一個變量int baseGreen。在每次遞歸調用期間,這個int都會減少,意圖爲每組3個圓圈更改綠色類型。

如果有人能夠冒險猜測爲什麼會發生這種情況,我將非常感激。謝謝。

+0

顏色簡單地跟隨你的遞歸路徑。對於每個尺寸,首先你一直走到左邊,然後居中,然後右邊。而不是獨立地跟蹤你的顏色,你可能想使它成爲'rad'的函數。 –

+0

隨着您在每次遞歸中減少「rad」,您只需爲您的顏色製作較暗的陰影並將其傳遞。就像您將「rad」減少1/3一樣,您可以增加陰影並使用新顏色陰影來進行3次createCircles()調用。 – anonymous

+0

乾杯的答覆,請你演示我應該如何實施你的建議。 – user3352349

回答

3

跟蹤基本顏色是不必要的,因爲您將它傳遞給您的方法。

這使顏色的簡單方式逐漸變暗

public void createCircles(int x, int y, int rad, Color parentColor){ 
    Circle myCircle = new Circle(x, y, rad, parentColor); 
    ... 
    if(!(rad<1)){ 
     ... 
     Color myColor = parentColor.darker(); 
     createCircles(x - (2*rad), y, rad/3, myColor); 
     createCircles(x, y, rad/3, myColor); 
     createCircles(x + (2*rad), y, rad/3, myColor); 
    } 
} 
+0

我已經實現了它(請參閱上文),但我仍然得到了一個不正確的圓圈表示。我做對了嗎? – user3352349

+1

顏色myColor = parentColor; ????你應該調用darker()並創建一個新的較暗的顏色用於createCircles()的3次調用。 – anonymous

+0

謝謝非常。 – user3352349