PDA

View Full Version : [JAVA]Tic Tac Toe con repaint non funzionante


BlackPhoenix2
05-06-2009, 19:05
avevo fatto questo codice(quotato sotto) per gestire il gioco del tris(tic tac toe) ma ho dei problemi nella visualizzazione del cerchio o x al click del mouse xke la repaint non viene chiamata quando la invoco io da codice, ma alla fine del metodo, quindi visto che chiamo la funzione per cambiare il giocatore corrente, se devo disegnare una x mi disegna un cerchio, e viceversa.
sapete consigliarmi un modo per ovviare a questo problema?
grazie in anticipo!

public void mouseClicked(MouseEvent e) {

if(started==false){
JOptionPane.showMessageDialog(null,"Inizia una nuova partita!");
return;
}
int x,y;
TrisPan p=(TrisPan)e.getSource();
if(p.isClicked()){
JOptionPane.showMessageDialog(null,"Già premuto!");
return;
}

x=p.getXc();
y=p.getYc();
game.mossa(x,y);

/*try {
game.mossa(x,y);
} catch (TrisException ex) {
JOptionPane.showConfirmDialog(null,"ERRORE!");
}*/

p.setClicked(true);
JOptionPane.showMessageDialog(null,"Simbolo corrente:"+game.getGiocatorecorrente().getSimbolo());
p.repaint();


game.checkVittoria();
if(game.isPareggio()){
setAllClicked();
started=false;
JOptionPane.showMessageDialog(null,"Partita Pareggiata!");
int r=JOptionPane.showConfirmDialog(null, "Fare un altra partita?");
if(r==JOptionPane.YES_OPTION){
game=new Tris(p1,p2);
nameField.setText(game.getGiocatorecorrente().getNome());
symbolField.setText(""+game.getGiocatorecorrente().getSimbolo());
started=true;
//JOptionPane.showMessageDialog(null,game.getGiocatorecorrente().getNome()+game.getGiocatorecorrente().getSimbolo()+started);
repaintAll();
return;
}
if(r==JOptionPane.NO_OPTION){
repaintAll();
nameField.setText("");
return;

}
}

if(game.getVincitore()!=null){

if(p1==game.getVincitore()){
setAllClicked();
started=false;
p1Field.setText(""+(Integer.parseInt(p1Field.getText())+1));
JOptionPane.showMessageDialog(null,game.getVincitore().getNome()+" ( "+game.getVincitore().getSimbolo()+" ) Wins!");
int r=JOptionPane.showConfirmDialog(null, "Fare un altra partita?");
if(r==JOptionPane.YES_OPTION){
game.setGiocatorecorrente(null);
repaintAll();
game=new Tris(p1,p2);
nameField.setText(game.getGiocatorecorrente().getNome());
symbolField.setText(""+game.getGiocatorecorrente().getSimbolo());
started=true;
return;

}
if(r==JOptionPane.NO_OPTION){
repaintAll();
nameField.setText("");
symbolField.setText("");
return;

}
}

}
game.cambiaGiocatoreCorrente();
nameField.setText(game.getGiocatorecorrente().getNome());
symbolField.setText(""+game.getGiocatorecorrente().getSimbolo());

}

franksisca
06-06-2009, 17:05
al momento (non ho nemmeno guardato il codice) le prime cose che mi vengono in mente è:

1) thread
2) cerca in rete il concetto di pattern MVC, in particolare come funziona su java Observe/Observable


per ora posso dirti ben poco :p