Teclear una letra y generar un objeto

please format code with </> button * homework policy * asking questions

Tengo una duda sobre como hacer para que una vez consigo asignar a una letra un objeto por ejemplo, al pulsar la letra C aparece un círculo donde tengo el ratón. Pero luego no dejan de aparecer a medida que muevo el ratón. Cómo puedo hacer para que al pulsar C sólo aparezca un solo círculo?

El codigo que he escrito es el siguiente:
void setup () {
size(500,500);
background(255,255,255);
}

void draw() {

if(key==‘c’ ||key==‘C’)
{
fill(255,0,0);
stroke(0,0,0);
ellipse(mouseX,mouseY,50,50);
smooth();
}

if(key==‘r’ ||key==‘R’)
{
fill(0,255,0);
stroke(0,0,0);
rect(mouseX,mouseY,40,70);
}

if(key==‘p’ ||key==‘P’)
{
clear();
background(255,255,255);
}
}

Buenas!

El problema as que la variable key almacena la última tecla pulsada. Asi que cada iteración en draw va a ejecutar el código con el valor key= la última tecla pulsada.

Lo que tienes que hacer es ejecutar el código solo cuando una tecla es pulsada, no en cada iteración de draw.

void keyPressed()
{
//mueve to código de draw aquí.
}

la función keyPressed solo se va a ejecutar en el momento que pulses una tecla.

1 Like

de acuerdo

OR :


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

void draw() {

  if (keyPressed && (key=='c' ||key=='C')) {
    fill(255, 0, 0);
    stroke(0, 0, 0);
    ellipse(mouseX, mouseY, 50, 50);
    smooth();
  }

  if (keyPressed && (key=='r' ||key=='R')) {
    fill(0, 255, 0);
    stroke(0, 0, 0);
    rect(mouseX, mouseY, 40, 70);
  }

  if (key=='p' ||key=='P') {
    clear();
    background(255, 255, 255);
  }
}

1 Like