2017-05-16 3 views
1

나는 10 개의 원으로 된 피라미드를 처리하려고하는데이 코드를 깨끗한 루프로 압축하는 좋은 방법을 찾을 수 없습니다. lights[c].display() 함수는 단순히 현재 번역의 가운데에 타원과 일부 텍스트를 그립니다. gap 변수를 동그라미 사이의 간격을 업데이트하는 데 사용할 수있는 것으로 유지하고 싶습니다. 필자는 피라미드를 만드는 방식으로 행과 열을 증가시키는 방법을 찾지 못했습니다. 항상 10 개의 서클이 있습니다. 당신의 도움을 주셔서 감사합니다!Processing/Java에서 Circles의 Pyramid for 루프/


enter image description here


int gap = 30; 

public void display() { 
    int c = 0; 
    pushMatrix(); 
    translate(0, 0); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(-gap, 2*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(gap, 2*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(-2*gap, 4*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(0, 4*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(2*gap, 4*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(-3*gap, 6*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(-gap, 6*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(gap, 6*gap); 
    lights[c++].display(); 
    popMatrix(); 

    pushMatrix(); 
    translate(3*gap, 6*gap); 
    lights[c++].display(); 
    popMatrix(); 
} 

답변

0

이 단순히 솔루션을 확실히하는 데 도움이

int[] tx = new int[]{0, -1, 1, ...}; 
int[] ty = new int[]{0, 2, 2, ...}; 

for(int c = 0; c < circlesCount; c++) { 
    pushMatrix(); 
    translate(tx[c] * gap, ty[c] * gap); 
    lights[c].display(); 
    popMatrix(); 
} 
+0

에서 시작할 수 있습니다! –