Conta i punti

Questo esercizio richiede l'uso della funzione di rilevazione dei punti in cui il pulsante del mouse viene premuto. In particolare, si tratta di disegnare un rettangolo, e poi di contare quante volte il pulsante è stato premuto al suo interno. Questo numero viene poi scritto al di sopra del rettangolo stesso.

Il rettangolo è fatto in questo modo: il punto in alto a sinistra è (20,20), la sua larghezza e altezza sono pari a 100. Lasciamo uno spazio di 20 punti al di sopra del rettangolo per poter scrivere il numero di volte che il pulsante viene premuto al suo interno.

Il problema è il seguente: dobbiamo memorizzare il numero di click all'interno del rettangolo. Questa variabile viene modificata ogni volta che si preme il pulsante, per cui viene modificata dalla funzione mouseDown. Inoltre, viene usata dalla funzione paint, che la stampa sopra il rettangolo. Dal momento che serve in due funzioni diverse, la dichiariamo come variabile globale.

import java.awt.*;

public class ContaPunti extends java.applet.Applet {
  int quantevolte=0;
In questa variabile memorizziamo il numero di volte che il pulsante è stato premuto all'interno del rettangolo. Lasciamo per un momento da parte la funzione mouseDown, e vediamo invece la funzione paint. Per prima cosa, dobbiamo disegnare il rettangolo, e poi dobbiamo disegnare sopra di esso il numero di click al suo interno. Dal momento che questo numero sta nella variabile quantevolte, il programma risulta il seguente:

  public void paint(Graphics g) {
    int i;

    g.drawRect(20,20,100,100);

    g.drawString(""+quantevolte,60, 18);
  }
Passiamo ora alla funzione mouseDown. Questa funzione riceve la posizione del cursore in cui il pulsante è stato premuto: deve controllare se questo punto si trova all'interno del rettangolo, ed eventualmente aumentare di uno la variabile che conta il numero di click.

Il punto si trova all'interno del rettangolo se il valore di x è compreso fra 20 e 120, e se il valore di y sta fra 20 e 120. Se questa condizione è verificata, aumentiamo di uno il valore della variabile quantevolte.

  public boolean mouseDown(Event e, int x, int y) {
    if( (y>=20) && (y<=120) && (x>=20) && (x<=120) ) { 
      quantevolte=quantevolte+1;
    }
    repaint();
    return true;
  }
Chiaramente, dopo aver aumentato il valore della variabile che conta il numero di click, occorre fare di nuovo il disegno, dal momento che va stampato questo nuovo valore al posto di quello vecchio.

Il programma complessivo ContaRect.java viene riportato qui sotto.

/*
  Conta il numero di volte che il pulsante del mouse
  viene premuto all'interno di ognuno dei rettangoli
  disegnati.
*/

import java.awt.*;

public class ContaRect extends java.applet.Applet {
  int quantevolte=0;

  public boolean mouseDown(Event e, int x, int y) {
    if( (y>=20) && (y<=120) && (x>=20) && (x<=120) ) { 
      quantevolte=quantevolte+1;
    }
    repaint();
    return true;
  }

  public void paint(Graphics g) {
    int i;

    g.drawRect(20,20,100,100);

    g.drawString(""+quantevolte,60, 18);
  }
}

Segue l'immagine di una finestra durante l'esecuzione.