/*
* Scrivere un Applet java che disegni un quadrato centrato in un punto scelto dal programmatore
* il cui vertice segua il mouse, quando e' nell'area dell'applet stesso.
*/
import java.awt.*; // Le classi per il disegno
import java.applet.Applet; // La superclasse
public class quadrati extends Applet {
private final int X = 150; // Centro del quadrato (X)
private final int Y = 75; // Centro del quadrato (Y)
private final int SCIA = 10; // Quanti quadrati visualizzo?
private int lifo [][]; // Array di vertici
private int curpos = 0; // Coordinate correnti del vertice
public void init () { // Metodo chiamato all'avvio dell'applet
int i;
lifo = new int [SCIA][];
for (i = 0; i < SCIA; i++) {
lifo [i] = new int [2];
lifo [i][0] = X/2;
lifo [i][1] = Y/2;
}
};
// Per trovare gli applet sempre 'a posto' ogni volta che rientro nella finestra
public void start () {
int i;
for (i = 0; i < SCIA; i++) {
lifo [i][0] = X/2;
lifo [i][1] = Y/2;
}
}
public boolean mouseMove (Event evt, int x, int y) { // Risponde al mouse
lifo [curpos][0] = x; // La nuova x e' la media tra la posizione attuale e quella del mouse
lifo [curpos][1] = y; // La nuova y e' la media tra la posizione attuale e quella del mouse
curpos ++; // Prossimo elemento del lifo
if (curpos >= SCIA) // Se esce dal lifo
curpos = 0; // Ritorna dall'inizio
repaint (); // Ordino di ridisegnare l'area dell'Applet
return true; // Ritorno 'true' per dire che ho gestito l'evento
};
void quadrato (Graphics g, int xo, int yo) {
int deltax = xo - X; // Calcola la differenza tra il mouse e il centro
int deltay = yo - Y;
// Calcola i quattro vertici e ci traccia le linee
g.drawLine(X + deltax, Y + deltay, X + deltay, Y - deltax);
g.drawLine(X + deltay, Y - deltax, X - deltax, Y - deltay);
g.drawLine(X - deltax, Y - deltay, X - deltay, Y + deltax);
g.drawLine(X - deltay, Y + deltax, X + deltax, Y + deltay);
};
synchronized public void paint(Graphics g) { // Metodo invocato per ridisegnare l'Applet
int i;
for (i = 0; i < SCIA; i++) {
quadrato (g, lifo [i][0], lifo [i][1]); // Disegno i singoli quadrati
}
};
}