2017-05-16 11 views
1

Ich versuche, eine Pyramide von 10 Kreisen in der Verarbeitung zu zeichnen, und ich kann nicht eine gute Möglichkeit, diesen Code in eine saubere Schleife zu verdichten. Die lights[c].display() Funktion zeichnet einfach eine Ellipse und etwas Text in der Mitte der aktuellen Übersetzung. Ich möchte die gap Variable als etwas beibehalten, das ich verwenden kann, um den Abstand zwischen den Kreisen zu aktualisieren. Ich habe gerade nicht herausgefunden, wie man die Zeilen und Spalten so erhöht, dass eine Pyramide entsteht. Es wird immer 10 Kreise geben. Danke für Ihre Hilfe!For Schleife für Pyramide von Kreisen in der Verarbeitung/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(); 
} 

Antwort

0

können Sie aus dieser einfach Lösung

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

beginnen, die sicherlich hilft! –

Verwandte Themen