Newsgroup: it.comp.java
Titolo: Problemi con il pedone su una griglia con java awt

Salve,
devo creare una interfaccia utilizzando la libreria java.awt
La mia interfaccia consiste in una griglia su cui devono essere
posizionate delle pedine in corrispondeza delle intersezioni.
Io ho disegnato la griglia utilizzando dei rettangoli, solo che ora non
so come fare per calcolare le coordinate delle intersezioni che mi
serviranno per posizionare le pedine quando clicco il mouse.
Questo è il codice che ho fatto per disegnare la griglia:
import java.awt.*;
import java.awt.event.*;
public class IGioco extends Frame {
    MenuBar barraMenu;
    Menu menu;
    public IGioco(){
      setBackground(new Color(255, 150, 10));
      setLayout(new FlowLayout(FlowLayout.CENTER, 30, 30));
      barraMenu = new MenuBar();
      menu = new Menu("Partita");
      MenuItem opz1 = new MenuItem("Nuova partita");
      MenuItem opz2 = new MenuItem("Apri partita salvata");
      MenuItem opz3 = new MenuItem("Salva");
      MenuItem opz4 = new MenuItem("Esci");
      menu.add(opz1);
      menu.add(opz2);
      menu.add(opz3);
      menu.add(opz4);
      barraMenu.add(menu);
      setMenuBar(barraMenu);
    }
}
class IScacchiera extends Canvas {
    int dim;
    Point pt;
    IScacchiera(int dim) {
      this.dim = dim;
    }
    public void paint(Graphics g){
      int size = 45;
      g.setColor(Color.black);
      g.drawRect(0, 0, ((dim + 1) *size), ((dim + 1) *size));
      g.setColor(new Color(255, 220, 0));
      g.fillRect(1, 1, ((dim + 1) *size) -1, ((dim + 1) *size) -1);
      Button[][] pannello = new Button[dim][dim];
      for (int i = 1; i <= dim; i++){
        for(int j = 1; j <= dim; j++) {
          pannello[i-1][j-1] = new Button();
          System.out.println("Lucia" +
pannello[i-1][j-1].getLocation().y );
          g.setColor(Color.black);
          g.drawLine(i * size , j * size, j * size, j * size);
          g.drawLine(j * size, i * size, j * size, j * size);
}
       }
     }
   }
}
class Main {
    public static void main(String[] args) {
      IGioco iGioco = new IGioco();
      iGioco.setTitle("Gonnect");
      IScacchiera iScacc = new IScacchiera(13);
      iScacc.setSize(631, 631);
      iGioco.add(iScacc);
      iGioco.pack();
      iGioco.setVisible(true);
    }
}
Vi prego aiutatemi perchè sono un pò di giorni che sono bloccato su
questo punto.
Qualsiasi aiuto o commento è ben accetto.
Grazie a tutti.
Ciao Dropper22


Ciao Dropper22,
te lo risolvo io il problema a patto che poi mi ci fai giocare.
Facciamo conto che tu abbia il metodo posizionaPedina(x,y).
Per trovare le coordinate in pixel ti basta moltiplicare x e y per la
dimensione della casella (il tuo size) e aggiungere un offset, che può
essere anche negativo, per allineare la pedina al punto esatto.
posx = x * size + offset;
posy = y * size + offset;
Ciao
ps
Ti sconsiglio di postare porzioni di codice che non hanno a che vedere
con le tue richieste.
ps
Ti consiglio di non usare le maiuscole nei nomi delle variabili - anche
se sono oggetti -, un po' perché si legge male, un po' perché non è
così che si devono scrivere.
ps
Voglio condividere un buon criterio per l'assegnamento dei nomi delle
variabili: per le variabili volanti, cioè quelle che vivono tra le
graffe o che comunque non escono dal metodo, in nome è corto, a volte
vocali; per le variabili dell'oggetto, anche se private, ci vuole un
nome descrittivo. Se tra due mesi ti dovessi soffermare su quel codice
ti sembrerà di ricevere i grassi interessi di una minima fatica, in
più riduci il rischio di commettere errori.