Mudar permanentemente o valor de uma variável

Estou tentando fazer com que quando a bolinha bata na “parede”, ela mude o sentido, ou seja, multiplicar a variavel por -1. Porém, ela só faz isso uma vez, ou seja, vai até a parede e quando colide com ela a bolinha fica indo e voltando, ja que a variavel inc_x fica alternando entre 10 e -10.

public void moveBolinha(){

    int inc_x ;
    int inc_y = 0;
    int aux = 0;
    int incrementa = 10;
    int bol_x = bolinha.getX();
    int bol_y = bolinha.getY();
    int size_bol = bolinha.getWidth();
    int wall_x = wall.getWidth();
    int wall_y = wall.getHeight();
    
  
    /**
     * CONDIÇÕES
     */
    if(bol_x >= wall_x - size_bol){
       aux = 1;

    }
   if(bol_x >= wall_x - size_bol){
       inc_x = -inc_x;

    }

   bolinha.setLocation(bol_x += 10, bol_y += inc_y);
    

}

Basta armazenar variáveis direção horizontal e direção vertical na bolinha:

public void moveBolinha() {
  /** outras variáveis **/
  int speed = bolinha.getSpeed();
  
  if (bol_x >= wall_x - size_bol) {
    bolinha.setHDirection(-1);
  } else if (bol_x < wall_x) {
    bolinha.setHDirection(1);
  }
  bolinha.setLocation(bol_x + speed * bolinha.getHDirection(), bol_y + speed * bolinha.getVDirection());
}

caso não seja possível armazenar na bolinha, coloque fora do método

int speed = 10;
int hDirection = 1;
int vDirection = 1;
public void moveBolinha() {
  /** outras variáveis **/
  
  if (bol_x >= wall_x - size_bol) {
    hDirection = -1;
  } else if (bol_x < wall_x) {
    hDirection = 1;
  }
  bolinha.setLocation(bol_x + speed * hDirection, bol_y + speed * vDirection);
}

deu certo, obrigado!! Não sabia que no java também tinham variáveis globais…

Não são variáveis globais, nem sei se tem isso em Java, o mais próximo de variáveis globais seria declarando assim:

public static int speed = 10;
public static int hDirection = 1;
public static int vDirection = 1;
1 curtida