2014-10-06 13 views
5

Sono abbastanza nuovo per Java e sto imparando la ricorsione Ho trovato alcuni oggetti interessanti come questo link che implementa la ricorsione per fare un tappeto persiano. Voglio realizzare questo codice in JavaRicorsione tappeto persiano

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(); 
} 

sto usando un JFrame per la mia finestra e un JPanel per il disegno, ma il codice è veramente diverso da Java, qualcuno può darmi un consiglio su dove cominciare? So che il codice usa i colori, ma quello che sto cercando di fare è rendere il tappeto solo di colore nero, quindi in seguito potrò implementare un po 'di colore.

Grazie per i suggerimenti.

+4

se si dispone di codice per includere, si prega di scriverlo esplicitamente nel tuo post, non utilizzando un collegamento esterno (che potenzialmente ha un problema di collegamento interrotto) –

+0

Il codice è post, grazie per indicarlo. – Pcirekt

+2

Nota rapida: l'algoritmo utilizzato dai tessitori è probabilmente iterativo, non ricorsivo ... gli umani non gestiscono molto bene gli stack profondi. – keshlam

risposta

0

Poiché si utilizza Swing, prendere in considerazione l'utilizzo di Oracle Java2D tutorial per imparare come disegnare linee e riempire i colori.