Complex variables

yes, as @glv asked, what is your status, and how far you understand this here?


now as earlier you hear from @Chrisir
the next step would be a Button class
( as that is a bigger step you might play with it a day )

// here we make a class for ONE Button.
// a class has 2 advantages, it has a own set of memory, with mixed variable types...
// like a record struct
// and it can have methods ( functions ) included.
// https://processing.org/reference/class.html

Button myButton = new Button(100, 100, 80, 30, false, "text", 0); // make a button of type class Button

// handing parameter  Button( x , y , w , h , initial ONOFF , description test , serial id );

// in that case not need predefined variables, ( the button ( a class ) remembers its settings )
// but in later cases like making a button row as array of class it might make sense again to define int xi,yi,wi,hi...

void setup() {
  size(300, 300);
}

void draw() {
  background(200, 200, 0);
  myButton.draw();
}

class Button { //________________________________________ begin class
  int x, y, w, h, id;
  boolean click=false, sel;
  String atext;

  Button(int _x, int _y, int _w, int _h, boolean _sel, String _atext, int _id) {
    x = _x;
    y = _y;
    w = _w;
    h = _h;
    sel = _sel;
    atext = _atext;
    id = _id;
  }

  void  draw() {
    mouse(); //__________________________________________ check on operation
    if (sel)       fill(0, 200, 0); //___________________ ON OFF fill color
    else           fill(0, 0, 200);
    if (over())    stroke(200, 0, 200); //_______________ hover stroke color
    else           stroke(0, 200, 200);
    strokeWeight(3);
    rect(x, y, w, h); //_________________________________ button area as rectangle
    noStroke(); //_______________________________________ button text ( here only one )
    fill(200);
    text(atext, x + 10, y + h  - 10);
  }

  boolean  over() {
    return (mouseX > x && mouseX < x + w && mouseY > y && mouseY < y + h);
  }

  void  mouse() {
    if ( over() && mousePressed && !click) { //__________ operation
      click = true; //___________________________________ just clicked
      sel = !sel; //_____________________________________ toggle action
    }
    if ( over() && !mousePressed )  click = false; //____ reset
  }
  
} //_____________________________________________________ end class

3 Likes