java - 用于处理/Java 中的金字塔金字塔的 For 循环

标签 java for-loop while-loop drawing processing

我正在尝试在处理过程中绘制一个由 10 个圆圈组成的金字塔,但我找不到一种好方法来将此代码压缩为一个干净的循环。 lights[c].display() 函数只是在当前翻译的中心绘制一个椭圆和一些文本。我想保留 gap 变量作为我可以用来更新圆圈之间间距的东西。我只是还没弄清楚如何以形成金字塔的方式增加行和列。总会有 10 个圆圈。感谢您的帮助!

<小时/>

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();
}

最佳答案

您可以从这个简单的解决方案开始

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/

相关文章:

java - Java 中的 gem 棋游戏 - 在 while 循环中使用 int 数组

java - 如何创建完全自定义的 JavaFX 控件?或者: how to create Pane with dynamically drawn background?

java - 我正在尝试检查某些文件是否存在。为什么我的程序不允许用户输入文件?

javascript - 使用 Jquery 动态更改标签 'for' 属性

c++ - for 循环内的 while 循环

c - 在 for 循环中使用 i 的历史是什么?

java程序卡在while循环中

python - 平均成绩计算器

java - Spring boot jpa通过实体管理器访问辅助数据源

java - 如何使用 Vesta CP 将我的子域绑定(bind)到我在 ubuntu 上的 tomcat 项目