# Teclear una letra y generar un objeto

**URL:** https://discourse.processing.org/t/teclear-una-letra-y-generar-un-objeto/35271
**Category:** Coding Questions
**Tags:** homework
**Created:** [February 18, 2022, 5:31pm UTC](https://discourse.processing.org/t/teclear-una-letra-y-generar-un-objeto/35271 "2022-02-18T17:31:13Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![AdriaCornell](https://avatars.discourse-cdn.com/v4/letter/a/c5a1d2/32.png) [@AdriaCornell](https://discourse.processing.org/u/AdriaCornell)
#### Post date: [February 18, 2022, 5:31pm UTC](https://discourse.processing.org/t/teclear-una-letra-y-generar-un-objeto/35271/1 "2022-02-18T17:31:13Z")

</div>

> please format code with \</\> button \* [homework policy](https://discourse.processing.org/faq/#homework) \* [asking questions](https://discourse.processing.org/t/2147)

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);  
}  
}

---

<div class="post-metadata">

### Author: ![Sikorsky](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/sikorsky/32/15729_2.png) [@Sikorsky](https://discourse.processing.org/u/Sikorsky)
#### Post date: [February 18, 2022, 6:06pm UTC](https://discourse.processing.org/t/teclear-una-letra-y-generar-un-objeto/35271/2 "2022-02-18T18:06:48Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![Chrisir](https://yyz2.discourse-cdn.com/flex036/user_avatar/discourse.processing.org/chrisir/32/45_2.png) [@Chrisir](https://discourse.processing.org/u/Chrisir)
#### Post date: [February 18, 2022, 6:28pm UTC](https://discourse.processing.org/t/teclear-una-letra-y-generar-un-objeto/35271/3 "2022-02-18T18:28:54Z")

</div>

de acuerdo

OR :

```auto

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);
  }
}

```
