2017-05-16 1 views
1

J'essaie de dessiner une pyramide de 10 cercles en cours de traitement et je n'arrive pas à trouver une bonne façon de condenser ce code en une boucle propre. La fonction lights[c].display() dessine simplement une ellipse et du texte au centre de la traduction en cours. Je voudrais garder la variable gap comme quelque chose que je peux utiliser pour mettre à jour l'espacement entre les cercles. Je n'ai juste pas compris comment incrémenter les lignes et les colonnes d'une manière qui donne une pyramide. Il y aura toujours 10 cercles. Merci de votre aide!For boucle pour la pyramide des cercles en cours de traitement/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(); 
} 

Répondre

0

Vous pouvez commencer à partir de cette solution simple

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

Cela aide certainement! –