How to show the objects when the ball hits left and right side wall

I tried to do to fix this issue, but it didn’t work well… :/…
You know this example is bouncing ball and I want to show the obstacle until ball hits obstacle. I want to get some help to solve. :)… (The problem is this code showed the obstacle one time, I just need to show the obstacle before ball hits the obstacle.
Here is my code:
/* the speed of x and y , the position of x and y /
float xspeed; // x-velocity
float yspeed; // y-velocity
float xpos; // x-position
float ypos; // y-position
boolean stop=false; // Controller about changing ball’s color
boolean obstacledraw=false;
void setup(){
frameRate(40);
size(600,400); // set Canvas’ size
noStroke(); // Disables drawing the stroke.
colorMode(HSB,360,100,100); // changes the way Processing interprets color data.
fill(290,100,100,255); // set ball’s initial color and screen before we push the key button
background(0);
noLoop();
/
set initial position about x and y, create initial speed of x and y */
xpos = width/2; // xpos = 300
ypos = height/2; // ypos = 200
xspeed=random((width/150),(width/100)); // Velocity of x [4, 6]
yspeed=random((height/100),(height/80)); // Velocity of y [4, 5]

}
void draw(){
int r = (width/120); // radius
/* Variables of obstacles /
float obs_ox=-200; // obstacle x-position
float obs_oy=-200; // obstacle y-position
background(0); // cover previous balls
/
movement of x and y about balls */
xpos = xpos + xspeed;
if (xpos+r > width || xpos-r < 0) {
xspeed *= -1;
if(xpos <= r && (ypos <= 200) ){ // left top
obs_ox= 500;
obs_oy= 0;
// fill(255);
// rect(obs_ox,obs_oy,200,200);
}
else if(xpos <= r && (ypos > 200) ){ // left bottom
obs_ox = 500;
obs_oy= 300;
// fill(255);
// rect(obs_ox,obs_oy,200,200);
}
else if(xpos+r > width && (ypos <= 200) ){ // right top
obs_ox = 0;
obs_oy = 0;
// fill(255);
// rect(obs_ox,obs_oy,200,200);
}
else if(xpos+r > width && (ypos > 200) ){ // right bottom
obs_ox = 0;
obs_oy = 300;
//fill(255);
// rect(obs_ox,obs_oy,200,200);
}
obstacledraw=true;
}

ypos = ypos + yspeed;
if (ypos+r > height || ypos-r < 0) {
yspeed = -1;
}
/
obstacles */

/* When the ball hits the wall /
/
if(xpos <= r && (ypos < (height/2)) ){ // hit the left top
obs_ox= random(400,500);
obs_oy=0;
fill(255);
rect(obs_ox,obs_oy,200,100);
}
else if(xpos <= r && (ypos > (height/2)) ){ // hit the left bottom
obs_ox=random(400,500);
obs_oy=300;
fill(255);
rect(obs_ox,obs_oy,200,100);
}
else if(xpos+r >= width && (ypos < (height/2)) ){ // hit the right top
obs_ox=0;
obs_oy=0;
fill(255);
rect(obs_ox,obs_oy,200,100);
}
else if(xpos+r >= width && (ypos > (height/2)) ) { // hit the right bottom
obs_ox=0;
obs_oy=random(250,300);
fill(255);
rect(obs_ox,obs_oy,100,200);
}*/
//fill(255);
//rect(obs_ox,obs_oy,200,100);
if(obstacledraw == true){
fill(255);
rect(obs_ox,obs_oy,200,200);
if(xpos-r < obs_ox || xpos+r > obs_ox){
obstacledraw = false;
}
}

// draw the balls
if(stop == false){ // change the color, if the mouse is pressed randomly.
fill(random(255),random(255),random(255));
}
circle(xpos,ypos,2*r);
}
void keyPressed(){
final int k = keyCode; // k means keyCode to use s or S in if statements
if(k == ‘s’ || k == ‘S’)
if(looping) noLoop(); // stop if looping in the draw
else loop(); // start
}

void mousePressed(){
stop = false; // control the color, if mouse is pressed, color gradually be changed
}

void mouseReleased(){
stop = true; // if mouse is released, changing color will be stop.
}

little hard to say what you want

here something happens.

Please check how to post code

Thank you!

Chrisir



/* the speed of x and y, the position of x and y */
float xspeed; // x-velocity
float yspeed; // y-velocity

float xpos; // x-position
float ypos; // y-position

boolean stop=false; // Controller about changing ball’s color

boolean obstacledraw=true;

/* Variables of obstacles */
float obs_ox=-200; // obstacle x-position
float obs_oy=-200; // obstacle y-position

int r; // radius

void setup() {
  size(600, 400); // set Canvas’ size
  frameRate(40);

  noStroke(); // Disables drawing the stroke.
  colorMode(HSB, 360, 100, 100); // changes the way Processing interprets color data.
  fill(290, 100, 100, 255); // set ball’s initial color and screen before we push the key button
  background(0);
  // noLoop();

  // set initial position about x and y, create initial speed of x and y */
  xpos = width/2; // xpos = 300
  ypos = height/2; // ypos = 200
  xspeed=random((width/150), (width/100)); // Velocity of x [4, 6]
  yspeed=random((height/100), (height/80)); // Velocity of y [4, 5]
  r = (width/120); // radius
}

void draw() {

  background(0); // cover previous balls

  if (xpos <= r && (ypos <= 200) ) { // left top
    obs_ox= 500;
    obs_oy= 0;
    // fill(255);
    // rect(obs_ox,obs_oy,200,200);
  } else if (xpos <= r && (ypos > 200) ) { // left bottom
    obs_ox = 500;
    obs_oy= 300;
    // fill(255);
    // rect(obs_ox,obs_oy,200,200);
  } else if (xpos+r > width && (ypos <= 200) ) { // right top
    obs_ox = 0;
    obs_oy = 0;
    // fill(255);
    // rect(obs_ox,obs_oy,200,200);
  } else if (xpos+r > width && (ypos > 200) ) { // right bottom
    obs_ox = 0;
    obs_oy = 300;
    //fill(255);
    // rect(obs_ox,obs_oy,200,200);
  }
  //  obstacledraw=true;

  reflectBall() ; 

  /* obstacles */

  /* When the ball hits the wall */
  if (xpos <= r && (ypos < (height/2)) ) { // hit the left top
    obs_ox= random(400, 500);
    obs_oy=0;
    //fill(255);
    //rect(obs_ox, obs_oy, 200, 100);
  } else if (xpos <= r && (ypos > (height/2)) ) { // hit the left bottom
    obs_ox=random(400, 500);
    obs_oy=300;
    //fill(255);
    //rect(obs_ox, obs_oy, 200, 100);
  } else if (xpos+r >= width && (ypos < (height/2)) ) { // hit the right top
    obs_ox=0;
    obs_oy=0;
    //fill(255);
    //rect(obs_ox, obs_oy, 200, 100);
  } else if (xpos+r >= width && (ypos > (height/2)) ) { // hit the right bottom
    obs_ox=0;
    obs_oy=random(250, 300);
    //fill(255);
    //rect(obs_ox, obs_oy, 100, 200);
  } // */

  // fill(255);
  //rect(obs_ox,obs_oy,200,100);

  if (obstacledraw) {
    fill(255);
    rect(obs_ox, obs_oy, 200, 200);
    if (xpos-r < obs_ox || xpos+r > obs_ox) {
      // obstacledraw = false;
    }
  }

  fill(255, 0, 220); 
  // draw the balls
  if (stop) {
    // change the color, if the mouse is pressed randomly.
    fill(random(255), random(255), random(255));
  }
  ellipse(xpos, ypos, 
    2*r, 2*r);
} // func draw()

// -------------------------------------------------------------------------------

void reflectBall() {
  // 
  /* movement of x and y about balls */
  xpos = xpos + xspeed;
  if (xpos+r > width || xpos-r < 0) {
    xspeed *= -1;
  }
  // 
  ypos = ypos + yspeed;
  if (ypos+r > height) {
    yspeed = -1; // neg
  }
  if (ypos-r < 0) {
    yspeed = 1; // pos
  }
}

void keyPressed() {
  final int k = keyCode; // k means keyCode to use s or S in if statements
  if (k == 's' || k == 'S')
    if (looping) noLoop(); // stop if looping in the draw
    else loop(); // start
}

void mousePressed() {
  stop = false; // control the color, if mouse is pressed, color gradually be changed
}

void mouseReleased() {
  stop = true; // if mouse is released, changing color will be stop.
}
//

Oh, sorry :)… Also, thank you.