
Cosa sono gli eventi?
Rilevare eventi con mousePressed() e keyPressed() in Processing
Durante l’esecuzione di un programma, possono verificarsi azioni che non dipendono direttamente dal flusso continuo del codice, ma da interazioni esterne, come un clic del mouse, la pressione di un tasto o altri cambiamenti. Queste azioni prendono il nome di eventi.
In Processing, gli eventi che gestiamo più frequentemente sono quelli legati al mouse e alla tastiera. Per rispondere a questi eventi, il linguaggio ci mette a disposizione blocchi di codice speciali, simili a setup()
e draw()
, ma con una differenza fondamentale: il loro contenuto non viene eseguito automaticamente all’avvio del programma, né ripetuto in loop.
Le funzioni evento, come mousePressed()
o keyPressed()
, vengono eseguite una sola volta, solo quando si verifica una specifica azione dell’utente, come ad esempio un clic o la pressione di un tasto. Questo permette di rendere i nostri sketch interattivi e reattivi, eseguendo istruzioni solo al momento giusto.
1. La funzione mousePressed()
Questa funzione si attiva ogni volta che l’utente preme un tasto del mouse.
Esempio 1: disegnare un quadrato dove si fa clic
7 | // Vuoto, perché disegniamo solo quando si clicca |
13 | rect(mouseX, mouseY, 40, 40); |
Ogni clic del mouse disegna un nuovo quadrato verde nella posizione del puntatore.

2. La funzione keyPressed()
Viene eseguita ogni volta che si preme un tasto sulla tastiera.
Esempio 2: aumentare la dimensione di un cerchio premendo i tasti “+” o “-“
9 | ellipse(width/2, height/2, diametro, diametro); |
15 | } else if (key == '-' ) { |
16 | diametro = max(10, diametro - 10); |
Premi +
per ingrandire il cerchio e -
per rimpicciolirlo, con un limite minimo.

3. Usare keyCode per i tasti speciali
Oltre ai caratteri (key
), possiamo usare keyCode
per tasti speciali come le frecce direzionali.
Esempio 3: muovere un quadrato con le frecce
15 | if (keyCode == LEFT) x -= 10; |
16 | if (keyCode == RIGHT) x += 10; |
17 | if (keyCode == UP) y -= 10; |
18 | if (keyCode == DOWN) y += 10; |

4. Combinare eventi di mouse e tastiera
Esempio 4: disegnare con il mouse, cancellare tutto con la barra spaziatrice
12 | ellipse(mouseX, mouseY, 30, 30); |

5. Esercizi per approfondire
Esercizio 1: disegna un cerchio con il clic sinistro, un rettangolo con il tasto destro
11 | if (mouseButton == LEFT) { |
13 | ellipse(mouseX, mouseY, 40, 40); |
14 | } else if (mouseButton == RIGHT) { |
16 | rect(mouseX, mouseY, 50, 30); |

Esercizio 2: cambia il colore del pennello con i tasti numerici da 1 a 5
1 | color pennello = color(0); |
15 | ellipse(mouseX, mouseY, 30, 30); |
19 | if (key == '1' ) pennello = color(255, 0, 0); |
20 | if (key == '2' ) pennello = color(0, 255, 0); |
21 | if (key == '3' ) pennello = color(0, 0, 255); |
22 | if (key == '4' ) pennello = color(255, 255, 0); |
23 | if (key == '5' ) pennello = color(0); |

Esercizio 3: usa la tastiera per cambiare la forma (C = cerchio, Q = quadrato)
1 | String forma = "cerchio" ; |
13 | fill(100, 0, 200, 180); |
16 | if (forma == "cerchio" ) { |
17 | ellipse(mouseX, mouseY, 40, 40); |
18 | } else if (forma == "quadrato" ) { |
19 | rect(mouseX, mouseY, 40, 40); |
24 | if (key == 'c' || key == 'C' ) forma = "cerchio" ; |
25 | if (key == 'q' || key == 'Q' ) forma = "quadrato" ; |

Alcune precisazione nell’uso del tipo String
La riga:
1 | String forma = "cerchio" ; |
serve a memorizzare quale forma l’utente vuole disegnare. In pratica, la variabile forma agisce come una scatola di memoria in cui salviamo il tipo di figura scelta dall’utente: "cerchio"
oppure "rettangolo"
.
A cosa serve concretamente?
Immagina che l’utente prema il tasto Q: nel codice, abbiamo scritto:
1 | if (key == 'q' || key == 'Q' ) { |
A quel punto, nella variabile forma
sarà memorizzata la parola "rettangolo"
. Quando poi l’utente clicca con il mouse, il programma controlla cosa c’è scritto in forma
e decide quale figura disegnare:
1 | if (forma == "cerchio" ) { |
2 | ellipse(mouseX, mouseY, 40, 40); |
3 | } else if (forma == "rettangolo" ) { |
4 | rect(mouseX, mouseY, 50, 30); |
Quindi:
- La variabile
forma
vi permette di cambiare comportamento del disegno in base a una scelta dell’utente;
- funziona come interruttore logico per decidere quale forma disegnare al clic del mouse.
Se non la usassi?
Senza questa variabile, ogni clic disegnerebbe sempre la stessa figura, perché non avreste un modo per “ricordare” quale tipo di disegno è stato selezionato in precedenza.
Esercizio 4: realizziamo uno sketch unico che unisce i tre esercizi precedenti in un unico progetto
- viene mostrato ad avvio programma la lista delle funzioni;
- disegnare un cerchio con clic sinistro e un rettangolo con clic destro;
- cambiare colore con i tasti da 1 a 5;
- cambiare forma con i tasti C (cerchio) e Q (quadrato);
- pulire la finestra con la barra spaziatrice.
2 | color coloreAttuale = color(0); |
5 | String formaAttuale = "cerchio" ; |
12 | text( "Disegnare un cerchio con clic sinistro e un rettangolo con clic destro" , 10, 230); |
13 | text( "Cambiare colore con i tasti da 1 a 5" , 10, 250); |
14 | text( "Cambiare forma con i tasti C (cerchio) e Q (quadrato)" , 10, 270); |
15 | text( "Pulire la finestra con la barra spaziatrice" , 10, 290); |
27 | if (formaAttuale == "cerchio" ) { |
28 | ellipse(mouseX, mouseY, 40, 40); |
29 | } else if (formaAttuale == "rettangolo" ) { |
30 | rect(mouseX, mouseY, 50, 30); |
36 | if (key == 'c' || key == 'C' ) { |
37 | formaAttuale = "cerchio" ; |
38 | } else if (key == 'q' || key == 'Q' ) { |
39 | formaAttuale = "rettangolo" ; |
43 | if (key == '1' ) coloreAttuale = color(255, 0, 0); |
44 | if (key == '2' ) coloreAttuale = color(0, 255, 0); |
45 | if (key == '3' ) coloreAttuale = color(0, 0, 255); |
46 | if (key == '4' ) coloreAttuale = color(255, 255, 0); |
47 | if (key == '5' ) coloreAttuale = color(0); |
Cosa abbiamo imparato
- Gli eventi sono azioni (come clic o pressioni di tasti) a cui il nostro programma può rispondere.
- Le funzioni
mousePressed()
e keyPressed()
sono fondamentali per creare interattività.
- Usando
key
, keyCode
e mouseButton
possiamo controllare in dettaglio cosa accade nel nostro sketch.