2014-10-06 64 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來了解如何繪製線條和填充顏色。