我的任务是绘制一个 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 次。您将 XPos
和 YPos
变量保存在 draw()
函数之外,因此您在 内部对它们所做的任何更改draw()
函数将在下次调用 draw()
时保留。
您可以在 for 循环中创建它们并基于 来创建它们,而不是在草图的顶层保存
和 XPos
和 YPos
变量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/