Keyboard pingpong

void setup() {
  size(640, 480); //W, H
}
int r_x = 0;
int e_x = 20, e_y = 20;
int e_add_x = 3, e_add_y = 3;
void draw() {
  background(200, 200, 200); //R, G, B
 
  noStroke();
  fill(255, 0, 0); //R, G, B
  rect(r_x, 400, 100, 30); //X, Y, W, H
 
  stroke(0, 0, 0);
  fill(0, 255, 0);
  ellipse(e_x, e_y, 20, 20); // X, Y, RX, RY
 
  e_x += e_add_x;
  e_y += e_add_y;
  if(e_x < 10 || e_x > 640-10) e_add_x = -e_add_x;
  if(e_y < 10 || e_y > 480-10) e_add_y = -e_add_y;
  if(e_x > r_x && e_x < r_x+100 && e_y > 400 && e_y < 400+30)
    e_add_y = -e_add_y;

}

void keyPressed() {
  if(keyCode == LEFT) {
    r_x -= 10;
    if(r_x < 0) r_x = 0;
  } else if(keyCode == RIGHT) {
    r_x += 10;
    if(r_x > 640-100) r_x = 640-100;
  }
}