参见上面的描述递归绘制
但是我的代码添加到圈子中的颜色不正确的数组:
我有一个彩色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