【发布时间】:2014-12-01 07:41:56
【问题描述】:
我对 Java 相当陌生,我正在学习递归,我发现了一些很酷的东西,比如这个链接,它实现了递归以做波斯地毯。我想将此代码实现到java中
float a = 1.0;
int left = 0;
int right = 340;
int top = 0;
int bot = 340;
int r,g,b;
color firstColor;
color backC;
//color backC = color(35,95,28);
void setup()
{
//size(700, 700);
size(341, 341);
r = floor(random(1,255));
g = floor(random(1,255));
b = floor(random(1,255));
firstColor = color(g);
backC = color(r,g,b);
background(backC);
stroke(firstColor);
line(left,top,right,top);
line(left,bot,right,bot);
line(left,top,left,bot);
line(right,top,right,bot);
a = random(1,6);
chooseColor(left, right, top, bot, a);
}
void draw()
{}
void chooseColor(int left, int right, int top, int bot, float a)
{
int midcol, midrow;
color col;
if (left < (right-1))
{
col = floor((get(left,top) + get(right,top) + get(left,bot) + get(right,bot))/a);
midcol = (left + right) / 2;
midrow = (top + bot) / 2;
stroke(col);
line(left+1, midrow, right-1, midrow);
line(midcol, top+1, midcol, bot-1);
chooseColor(left, midcol, top, midrow, a);
chooseColor(midcol, right, top, midrow, a);
chooseColor(left, midcol, midrow, bot, a);
chooseColor(midcol, right, midrow, bot, a);
}
}
void keyPressed()
{
setup();
}
我的窗口使用 JFrame,绘图使用 JPanel,但代码与 java 确实不同,有人可以给我建议从哪里开始吗?我知道代码使用颜色,但我想做的是只用黑色制作地毯,所以之后我可以实现一些颜色。
感谢您的提示。
【问题讨论】:
-
如果您有任何代码要包含,请在您的帖子中明确写下,不要使用外部链接(可能存在链接断开问题)
-
代码已发布,感谢 por 指出。
-
快速说明:编织者使用的实际算法可能是迭代的,而不是递归的……人类不能很好地管理深堆栈。