int EQUILIBRE = 3;
int SUD_EST = 4;
int BALADE = SUD_EST;

class Walker {
  int x;
  int y;
  
  Walker() {
    x = width / 2;
    y = height / 2;
  }
  
  void display() {
    stroke(0);
    point(x, y);
  }
  
  boolean follow_the_mouse(float random) {
    return random < 0.5;  
  }
  
  void step() {
    float random = random(1);
    if (follow_the_mouse(random)) {    
      int x_direction = (mouseX - x);
      int y_direction = (mouseY - y);
      
      if (x_direction != 0) {
        x_direction /= abs(x_direction);
      } 
      if (y_direction != 0) {
        y_direction /= abs(y_direction);
      }
      
      x += x_direction;
      y += y_direction;
    } else {
      x += int(random(-2, 2));
      y += int(random(-2, 2));
    }

    x = constrain(x, 0, width-1);
    y = constrain(y, 0, height-1);
  }
}

Walker w;

void setup(){
  size(640, 360);
  w = new Walker();
  background(255);
}

void draw() {
  w.step();
  w.display();
}