Al hacer click en los botones colocados en la pantalla, el programa genera geometría en posiciones aleatorias mientras el botón se mantenga presionado. Ayuda

(instrucciones)El botón de la izquierda dibuja un circulo y el botón de la derecha dibuja un recuadro. Mientras mantengo presionados los botones, no solo genero más geometría, sino que ésta se va haciendo progresivamente más grande. Al soltar los botones, este proceso de crecimiento de reinicia.

(mi situacion),no logro hacer que el crecimiento de las figuras vaya en aumento. ayuda por favor

float x, y,tam=5;
color c;


void setup(){
  size(400,400);
  background(255);
}

void draw(){
  fill(255,0,0);
  rect(0,0,50,50);
  fill(255,0,0);
  rect(350,0,50,50);
  
  if((mouseX>0)&&(mouseX<0+50)&&
  (mouseY>0)&&(mouseY<0+50&&mousePressed)){
    tam+=0.5;
 
  x = random(1,399);
  y = random(1,399);
  c = color(random(255),random(255),random(255));
  noStroke();
  fill(c);
  ellipse(x,y,tam,tam);
  }
  else{
    tam-=1;
  }
  if(tam<5){
    tam=5;
  }

  if((mouseX>350)&&(mouseX<350+50)&&
  (mouseY>0)&&(mouseY<0+50&&mousePressed)){
    tam+=0.5;
 
    
  x = random(1,399);
  y = random(1,399);
  c = color(random(255),random(255),random(255));
  noStroke();
  fill(c);
  rect(x,y,tam,tam);
  }
  else{
    tam-=1;
  }
  if(tam<5){
    tam=5;
  }
  
 }

Buenas @UnderHok

Hay varias maneras de abordar los eventos de click de teclado, yo te recomendaría hacerlo en los eventos mousePressed(), mouseReleased(), etc.

A parte, viendo el código, creo que la equivocación ha sido las funciones if/else, tal vez estés usando varios punteros (mouseX, mouseY) en cuyo caso creo que habría que gestionar las distintas pulsaciones (no creo que la pulsación de varios eventos tenga la misma variable mouseX/Y).

En tú código, se compureba el primer if y si se cumple, se aumenta el tamaño, sino, disminuye y luego si disminuye demasiado se establece el valor en 5, lo que pasa es que ahora, en el siguiente if (el del botón derecho), se vuelve a ejecutar la misma secuencia.

Entonces al tener pulsado uno, el otro no va a estar pulsado y el aumento que provoca la pulsación de un botón, lo anula la “no pulsación” del otro botón.

No sé si la explicación ha sido muy complicada jaja, te dejo aquí el código a mi entender que hace lo que buscas:

float x, y,tam=5;
color c;


void setup(){
  size(400,400);
  background(255);
}

void draw(){
  print(" Tamaño = " + tam + "\n");
  fill(255,0,0);
  rect(0,0,50,50);
  fill(255,0,0);
  rect(350,0,50,50);
  
  if((mouseX>0)&&(mouseX<0+50)&&
  (mouseY>0)&&(mouseY<0+50&&mousePressed)){
    tam+=0.5;
 
  x = random(1,399);
  y = random(1,399);
  c = color(random(255),random(255),random(255));
  noStroke();
  fill(c);
  ellipse(x,y,tam,tam);
  }/*
  else{
    tam-=1;
  }
  if(tam<5){
    tam=5;
  }*/
else
  if((mouseX>350)&&(mouseX<350+50)&&
  (mouseY>0)&&(mouseY<0+50&&mousePressed)){
    tam+=0.5;
 
    
  x = random(1,399);
  y = random(1,399);
  c = color(random(255),random(255),random(255));
  noStroke();
  fill(c);
  rect(x,y,tam,tam);
  }
  else{
    tam-=1;
  }
  if(tam<5){
    tam=5;
  }
  
 }
 /*
 void mousePressed(){
   tam += 0.5;
 }
 
 void mouseReleased(){
   tam = 5;
 }*/

Puedes hacer la comprobación de si está pulsado uno u otro con el if else y luego ya si no hay ninguno pulsado, dismnuir el tamaño.

También te he dejado en el código un par de cosas para que puedas comprobar en futuras ocasiones lo que está pasando más fácilmente y puedas corregirlo, el uso de “prints” nos ayuda a ver la evolución de una variable en cualquier lugar que queramos, así sabemos como cambia a la entrada/salida de cualquier punto. También te he dejado un par de funciones al final para gestionar pulsaciones y dejar de pulsar, por si en un futuro te pueden ser útiles.

Espero que esto te ayude, un saludo :relaxed: