2014-03-04 45 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