2017-05-16 11 views
1

私は処理中に10個の円のピラミッドを描こうとしていますが、このコードをクリーンなループに凝縮する良い方法を見つけることはできません。 lights[c].display()関数は、現在の訳文の中央に楕円とテキストを単に描きます。 gap変数を、円の間隔を更新するために使用できるものにしておきたいと思います。私はちょうどピラミッドの結果となる方法で行と列をインクリメントする方法を考え出していない。常に10のサークルがあります。ご協力いただきありがとうございます!Processing/Javaの円のピラミッドのループ


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

から開始することができます! –

関連する問題