For loop 让循环在处理过程中来回运行

For loop 让循环在处理过程中来回运行,for-loop,boolean,processing,For Loop,Boolean,Processing,目前,我正在尝试在处理草图中获得一个“来回运行”的循环。例如,我可以使用mouseY来实现它,但我想自动实现它:使用rect()应该一行一行地水平显示…如1、1+next、1+next+next和15行后反转!15, 14, 13, 12,11,10,9… 使用frameCount我可以让它们按我的意愿运行…但还没有回来。所以我读了一些关于布尔语句的书…并试图用语法来理解它…语法似乎还可以…但我不能真正得到正确的逻辑来让它工作。有人知道如何用正确的方式写吗? 这是我目前的代码: int a; i

目前,我正在尝试在处理草图中获得一个“来回运行”的循环。例如,我可以使用
mouseY
来实现它,但我想自动实现它:使用
rect()应该一行一行地水平显示…如1、1+next、1+next+next和15行后反转!15, 14, 13, 12,11,10,9…
使用
frameCount我可以让它们按我的意愿运行…但还没有回来。所以我读了一些关于布尔语句的书…并试图用语法来理解它…语法似乎还可以…但我不能真正得到正确的逻辑来让它工作。有人知道如何用正确的方式写吗?
这是我目前的代码:

int a;
int i;
int step = 60;
void setup() {
  size(1080, 1080);
}
void draw() {
  background(0);
for (a = 0; a < 15; a++) {
for (i = 0; i < 5; i++) {
  fill(255, 255, 255);
  rect(216*i,60*a,216,60);
}
 
  }
}
inta;
int i;
int步长=60;
无效设置(){
尺寸(10801080);
}
作废提款(){
背景(0);
对于(a=0;a<15;a++){
对于(i=0;i<5;i++){
填充(255、255、255);
rect(216*i,60*a,216,60);
}
}
}
这就创建了一个模式——一次完成——我知道
for(a=0;a
for(a=0;a
可以让它工作,但我想让它自动工作——这需要出现在某个地方——但是怎么做呢

a+=step;
if ( a > 15 || a < 0 ){
step = -step;
}
a+=step;
如果(a>15 | | a<0){
步骤=-步骤;
}

感谢您提供的任何帮助

可能更简单的方法是您不尝试更改递增步骤的方式,而是更改为每个步骤生成的矩形数量。为了更清楚地考虑这个代码:

MAX_RECTANGLES = 15;
let frameCount = 0;

while (frameCount < 100) {
  frameCount++;

  step = frameCount % (MAX_RECTANGLES * 2);
  nbRect = MAX_RECTANGLES - Math.abs(MAX_RECTANGLES - step);

  console.log(step, nbRect);
}
MAX_矩形=15;
设frameCount=0;
而(帧数<100){
frameCount++;
步长=帧数%(最大矩形*2);
nbRect=MAX_矩形-Math.abs(MAX_矩形-step);
控制台日志(步骤,nbRect);
}
frameCount
变量和
while
循环只是重新创建p5js循环,这里有趣的是
步骤和
nbRect
变量:

  • MAX_RECTANGLES
    是显示所有矩形时要显示的矩形数。在我们的示例中,我们希望显示15个矩形
  • 步骤将在
    0
    MAX_矩形*2
    之间变化。在我们的示例中,这将在
    0
    30
    之间变化
  • 我们将根据以下规则在
    0
    15
    之间改变
    nbRect

    • 如果
      0谢谢您!因此,我将其写入如下处理:

      int MAX_RECT = 18;
      int step = 60;
      
      void setup() {
        size(1080, 1080);
        frameRate(30);
      }
      void draw() {
        background(0);
        int step = (frameCount/2 % MAX_RECT) *2;
        int nbRectangles = MAX_RECT - Math.abs(MAX_RECT - step);
      
        for (int a = 0; a < nbRectangles; a++) {
          for (int i = 0; i < 5; i++) {
            fill(255, 255, 255);
            rect(216 * i, 60 * a, 216, 60);
          }
        }
      }
      
      int MAX_RECT=18;
      int步长=60;
      无效设置(){
      尺寸(10801080);
      帧率(30);
      }
      作废提款(){
      背景(0);
      整数步长=(帧数/2%最大值)*2;
      int nbRectangles=MAX_RECT-Math.abs(MAX_RECT-step);
      对于(int a=0;a
      有没有办法不重画第一行矩形?我得查一下数学题;功能–我还不熟悉这个…:-(