java - 嵌套 for 循环 - 处理 (java)

标签 java for-loop processing nested-loops

我的任务是绘制一个 10 x 10 轮子的网格。每个应该是随机颜色,并且有很多辐条,就像真正的轮子一样。我必须使用嵌套 for 循环来执行此操作。

我已经得到了下面的代码,但由于某种原因它绘制了一个 10 x 无限网格。我不明白为什么外循环应该只运行 10 次。

float XPos = 25;
float YPos = 25;
float Radius = 20;

void setup() {
    size(500, 500);
}

void draw() {
    for (int h = 0; h < 10; h++) {
        for (int i = 0; i < 10; i++) {
            float RanR = random(250);
            float RanG = random(250);
            float RanB = random(250);

            stroke(RanR, RanG, RanB);
            ellipse(XPos, YPos, Radius * 2, Radius * 2);

            for (int j = 0; j < 360; j += 10) {
                stroke(RanR, RanG, RanB);
                line(XPos, 
                     YPos, 
                     XPos + Radius * sin(radians(j)), 
                     YPos + Radius * cos(radians(j))
                    );
            }

            XPos += Radius * 2;
        }

        XPos = 25;
        YPos += Radius * 2;
    }
}

最佳答案

draw() 函数每秒自动调用 60 次。您将 XPosYPos 变量保存在 draw() 函数之外,因此您在 内部对它们所做的任何更改draw() 函数将在下次调用 draw() 时保留。

您可以在 for 循环中创建它们并基于 来创建它们,而不是在草图的顶层保存 XPosYPos 变量hi:

float Radius = 20;

void setup() {
  size(500, 500);
}

void draw() {
  for (int h = 0; h < 10; h++) {
    for (int i = 0; i < 10; i++) {

      float XPos = 25+40*h;
      float YPos = 25+40*i;
      float RanR = random(250);
      float RanG = random(250);
      float RanB = random(250);

      stroke(RanR, RanG, RanB);
      ellipse(XPos, YPos, Radius * 2, Radius * 2);

      for (int j = 0; j < 360; j += 10) {
        stroke(RanR, RanG, RanB);
        line(XPos, 
        YPos, 
        XPos + Radius * sin(radians(j)), 
        YPos + Radius * cos(radians(j))
          );
      }
    }
  }
}

请注意,这将导致您的圆圈每秒以随机颜色重新绘制 60 次。您可以使用 randomSeed()函数每次都获取相同的随机数,或者您可以在 draw() 末尾调用 noLoop(),这样就不会再次自动调用。

关于java - 嵌套 for 循环 - 处理 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33108041/

相关文章:

Java、MySQL 特定查询不返回任何内容

python - Python 上确定是否由于内部条件在最后一次元素迭代中发生中断的最佳方法是什么?

windows - 何时以及在批处理文件中的 FOR/F 和 WMIC 中转义什么

javascript - 如何在三 Angular 形多维数组中填充数字?

java - 在 Java 中读取 JPEG

java - Hibernate 无法展开接口(interface)

java - 用户定义的标记界面有什么用,它是如何工作的?

java - 在处理中制作随机矩形

java - 在我制作的乒乓球游戏中,我不能同时移动两个 Racket

javascript - 如何使用p5.js在视频游戏中添加 "lives"?