我正在尝试在处理过程中绘制一个由 10 个圆圈组成的金字塔,但我找不到一种好方法来将此代码压缩为一个干净的循环。 lights[c].display()
函数只是在当前翻译的中心绘制一个椭圆和一些文本。我想保留 gap
变量作为我可以用来更新圆圈之间间距的东西。我只是还没弄清楚如何以形成金字塔的方式增加行和列。总会有 10 个圆圈。感谢您的帮助!
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();
}
最佳答案
您可以从这个简单的解决方案开始
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();
}
关于java - 用于处理/Java 中的金字塔金字塔的 For 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44008410/