Para saber si una tecla fue presionada podemos utilizar la variable booleana keyPressed , que
devuelve el valor true si alguna tecla fue pulsada y false si no se pulsó ninguna. Por otro lado,
tenemos la variable de estado key, que nos devuelve el valor de la última tecla pulsada.
En este caso el relleno cambia al pulsar cualquier tecla:
void draw() {
if (keyPressed == true) {
fill(0);
} else {
fill(255);
rect(25, 25, 50, 50);
En este otro caso el relleno cambia al pulsar b:
void draw() {
if(keyPressed) {
if (key == 'b' || key == 'B') {
fill(0);
} else {
fill(255);
rect(25, 25, 50, 50);
La función keyPressed() se llama una vez en cada ocasión que se pulsa una tecla.
int value = 0;
void draw() {
fill(value);
rect(25, 25, 50, 50);
void keyPressed()
if(value == 0) {
value = 255;
} else {
value = 0;
La función keyReleased() se llama una vez en cada ocasión que se suelta una tecla.
int value = 0;
void draw() {
fill(value);
rect(25, 25, 50, 50);
void keyReleased()
if(value == 0) {
value = 255;
} else {
value = 0;
Mientras que keyCode se utiliza cuando utilizamos teclas de símbolos y
caracteres especiales (SHIFT, CTRL, UP, DOWN, RIGHT, LEFT etc).
int x = 90;
void draw() {
noStroke();
background(127);
rect(x, 10, 3, 80);
void keyPressed() {
if (keyCode == LEFT) {
x = x - 5;
}
else if (keyCode == RIGHT) {
x = x + 5;
Aquí tenemos un ejemplo más elaborado que detecta si se presiona una tecla.
Nótese que en la función draw no hay código para las teclas. La función “public
void keyPressed()” se llama automáticamente cuando se detecta la presión de una
tecla. Entonces se almacena la tecla en dos variables:
1. key almacena el caracter.
2. keyCode almacena el número.
EJEMPLO 1.
void setup()
{
}
void draw() {
if (keyPressed)
{
println(”El código de la tecla pulsada es:” + keyCode);
}
}
Con este código averiguamos el código de cualquier tecla de función. Esto nos servirá para el
siguiente ejemplo, donde vamos a controlar la posición de un círculo con las teclas de flechas
(izq, der, arriba y abajo).
Si lo ejecutamos, veremos que los códigos son:
• Flecha DERECHA: 39
• Flecha IZQUIERDA: 37
• Flecha ARRIBA: 38
• Flecha ABAJO: 40
EJEMPLO 2.
int x = 300;
int y = 300;
void setup()
{
size(600,600);
background(0,0,0);
}
void draw()
{
if(keyPressed)
{
switch(keyCode)
{
case 38: //arriba……..también admite UP
y--;
break;
case 40: //abajo………también admite DOWN
y++;
break;
case 39: //derecha……también admite RIGHT
x++;
break;
case 37: //izquierda…..también admite LEFT
x--;
break;
default:
break;
}
background(0,0,0);
if(x>=575) //limita la trayectoria hacia la derecha
x= 575;
if(x<=25) //limita la trayectoria hacia la izquierda
x=25;
if(y>=575) //limita la trayectoria hacia abajo
y= 575;
if(y<=25) //limita la trayectoria hacia arriba
y=25;
ellipse(x,y,50,50);
println("x: "+ x +",y: " + y);
}
}
EJEMPLO 3.
void setup()
{
}
void draw() {
}
public void keyPressed() {
if (keyPressed)
{
println("Tecla pulsada: " + key);
println("Código de la Tecla pulsada: " + keyCode);
}
}
Código para juegos que necesitan presionar teclas.
1 // Simple sketch to show key pressed
2 int ballx=0;
3 int bally=0;
4 int speed=10;
5
6 public void setup()
7 {
8 size(600, 600);
9 background(0);
10 }
11
12 void draw()
13 {
14 smooth();
15 background(0);
16 ellipse(ballx,bally,20,20);
17 }
18
19 public void keyPressed()
20 {
21
22 println("Key code pressed: " + keyCode);
23
24 if (key == 'w')
25 {
26 ballUp();
27 }
28 else if (key == 'z')
29 {
30 ballDown();
31 }
32 else if (key == 'a')
33 {
34 ballLeft();
35 }
36 else if (key == 's')
37 {
38 ballRight();
39 }
40
41 }
42 public void keyReleased()
43 {
44 println("Just to let you know a key has been released");
45 }
46
47 void ballUp()
48 {
49 if ( bally >=0 && bally <= width )
50 {
51 bally = bally-speed;
52 }
53 }
54
55 void ballRight()
56 {
57 if ( ballx >=0 && ballx <= width )
58 {
59 ballx = ballx+speed;
60 }
61 }
62
63 void ballLeft()
64 {
65 if ( ballx >=0 && ballx <= width )
66 {
67 ballx = ballx-speed;
68 }
69 }
70 void ballDown()
71 {
72 if ( bally >=0 && bally <= height )
73 {
74 bally = bally+speed;
75 }
76 }