|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Jun 2009
Messaggi: 1
|
[JAVA]Tic Tac Toe con repaint non funzionante
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! Codice:
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()); } |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
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 ![]()
__________________
My gaming placement |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:21.