Help with animating circles

Hello. I am coming back to processing after so long. I am trying to make an animation based on circles interlocking to create patterns. How can I make this code more effective? I also want to slow down the frame rate.

int a=0;
int b=1;
int c=0;
int d=-1;
void setup(){
size(1000, 1000); //size
loop();
smooth();
noFill();
}
void draw(){
background(0); //color
stroke(225); //stroke
frameRate(1);
for ( int x=-250; x<1300; x+=100) { //sets cricles
ellipse(x+a, -200, 200, 200);
ellipse(x+a, -100, 200, 200);
ellipse(x+a, 0, 200, 200);
ellipse(x+a, 0, 200, 200);
ellipse(x+a, 100, 200, 200);
ellipse(x+a, 200, 200, 200);
ellipse(x+a, 300, 200, 200);
ellipse(x+a, 400, 200, 200);
ellipse(x+a, 500, 200, 200);
ellipse(x+a, 600, 200, 200);
ellipse(x+a, 700, 200, 200);
ellipse(x+a, 800, 200, 200);
ellipse(x+a, 900, 200, 200);
ellipse(x+a, 1000, 200, 200);
ellipse(x+a, 1100, 200, 200);
ellipse(x+a, 1200, 200, 200);
ellipse(x+a, 1300, 200, 200);
ellipse(x+a, 1400, 200, 200);
ellipse(-100, x+a, 200, 200);
ellipse(-200, x+a, 200, 200);
ellipse(0,x+a,200,200);
ellipse(100, x+a, 200, 200);
ellipse(200, x+a, 200, 200);
ellipse(300, x+a, 200, 200);
ellipse(400, x+a, 200, 200);
ellipse(500, x+a, 200, 200);
ellipse(600, x+a, 200, 200);
ellipse(700, x+a, 200, 200);
ellipse(800, x+a, 200, 200);
ellipse(900, x+a, 200, 200);
ellipse(1000, x+a, 200, 200);
ellipse(1100, x+a, 200, 200);
ellipse(1200, x+a, 200, 200);
ellipse(1300, x+a, 200, 200);
ellipse(1400, x+a, 200, 200);
ellipse(x-c, -100, 200, 200);
ellipse(x-c, -200, 200, 200);
ellipse(x-c, 0, 200, 200);
ellipse(x-c, 100, 200, 200);
ellipse(x-c, 200, 200, 200);
ellipse(x-c, 300, 200, 200);
ellipse(x-c, 400, 200, 200);
ellipse(x-c, 500, 200, 200);
ellipse(x-c, 600, 200, 200);
ellipse(x-c, 700, 200, 200);
ellipse(x-c, 800, 200, 200);
ellipse(x-c, 900, 200, 200);
ellipse(x-c, 1000, 200, 200);
ellipse(x-c, 1100, 200, 200);
ellipse(x-c, 1200, 200, 200);
ellipse(x-c, 1300, 200, 200);
ellipse(x-c, 1400, 200, 200);

ellipse(-100, x-c, 200, 200);
ellipse(-200, x-c, 200, 200);
ellipse(0,x-c,200,200);
ellipse(100, x-c, 200, 200);
ellipse(200, x-c, 200, 200);
ellipse(300, x-c, 200, 200);
ellipse(400, x-c, 200, 200);
ellipse(500, x-c, 200, 200);
ellipse(600, x-c, 200, 200);
ellipse(700, x-c, 200, 200);
ellipse(800, x-c, 200, 200);
ellipse(900, x-c, 200, 200);
ellipse(1000, x-c, 200, 200);
ellipse(1100, x-c, 200, 200);
ellipse(1200, x-c, 200, 200);
ellipse(1300, x-c, 200, 200);
ellipse(1400, x-c, 200, 200);
a=a+b;
if(a>width/2) {
b=-1;
}
if(a<0){
b=1;
}

c=c+d;
if(c<0) {
d=1;
}
if(c>width/2){
d=-1;
}

}
}

Hello @AVREDDY,

These are very helpful guidelines here:

Lot of resources here:
https://processing.org/

Look up the references for starters:

  • setup()
  • draw()

Just a hint to increase x with each frame:

void draw() {
  background(0); //color
  stroke(225); //stroke
  //frameRate(1);
  //for ( int x=-250; x<1300; x+=100) 
  int x = frameCount;
  { //sets cricles

This will animate your cricles!

Look up the reference for frameCount.

Much of your code could be reduced (refactored) with a for() loop.

Still a lot of work to do!

I suggest going through tutorials, examples and the references to start you on your journey.

:)

It looks beautiful!

Like an arabic pattern.

Well done!

Welcome to the forum, great to have you here!

And welcome back to Processing itself !