2014-10-06 35 views
5

即时通讯相当新的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真的不一样,有人可以给我从哪里开始的建议吗?我知道代码使用的颜色,但我想要做的只是在黑色的地毯,所以后来我可以实现一些颜色。

感谢您的提示。

+4

如果你有任何代码可以包含,请明确地写在你的文章中,而不是使用外部链接(这可能有一个链接问题) – 2014-10-06 23:52:25

+0

代码是后,感谢por指出。 – Pcirekt 2014-10-07 00:05:20

+2

快速提示:织布员使用的实际算法可能是迭代的,而不是递归的......人类不能很好地管理深度堆栈。 – keshlam 2014-10-07 01:57:09

回答

0

由于您使用的是Swing,因此请考虑使用Oracle的Java2D tutorial来了解如何绘制线条和填充颜色。