參見上面的描述遞歸繪製
但是我的代碼添加到圈子中的顏色不正確的數組:
我有一個彩色baseColor,其中包含一個變量int baseGreen。在每次遞歸調用期間,這個int都會減少,意圖爲每組3個圓圈更改綠色類型。
如果有人能夠冒險猜測爲什麼會發生這種情況,我將非常感激。謝謝。
參見上面的描述遞歸繪製
但是我的代碼添加到圈子中的顏色不正確的數組:
我有一個彩色baseColor,其中包含一個變量int baseGreen。在每次遞歸調用期間,這個int都會減少,意圖爲每組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);
}
}
我已經實現了它(請參閱上文),但我仍然得到了一個不正確的圓圈表示。我做對了嗎? – user3352349
顏色myColor = parentColor; ????你應該調用darker()並創建一個新的較暗的顏色用於createCircles()的3次調用。 – anonymous
謝謝非常。 – user3352349
顏色簡單地跟隨你的遞歸路徑。對於每個尺寸,首先你一直走到左邊,然後居中,然後右邊。而不是獨立地跟蹤你的顏色,你可能想使它成爲'rad'的函數。 –
隨着您在每次遞歸中減少「rad」,您只需爲您的顏色製作較暗的陰影並將其傳遞。就像您將「rad」減少1/3一樣,您可以增加陰影並使用新顏色陰影來進行3次createCircles()調用。 – anonymous
乾杯的答覆,請你演示我應該如何實施你的建議。 – user3352349