2017-10-14 5 views
0

Programmeur novice ici essayant de faire un jeu graphique Tic tac toe. Je suis coincé avec mon programme cependant. Je ne suis pas sûr de savoir comment cocher deux fois le même carré. Je pensais une instruction if dans mon actionListener que leditArrêtez Jbutton de faire un changement si déjà cliqué

if(button clicked = True) 
{  
    JOptionPane.showMessageDialog((null, "ERROR", "Button already used. 
    Please hit again to change back", JOptionPane.ERROR_MESSAGE); 
    // STOP something along those lines 
} 
else 
{ 
    //Do nothing 
} 

fonctionnerait, mais je ne peux pas obtenir le programme fonctionne correctement. J'ai essayé newTurn.getmodel(). IsPressed() et cela n'a pas fonctionné et maintenant avec mon code actuel le programme sort le message d'erreur après chaque mouvement et les changements apparaissent toujours sur la carte. Voici mon code pour cette méthode. Toute aide est appréciée. Switch move est juste un int fixé à 0 donc les evens sont X et O sont impairs. Mon if (newTurn.isEnabled()) est mon problème

+0

Utilisez un 'JToggleButton' ou désactivez le bouton d'une autre interaction – MadProgrammer

Répondre

0

Voici mon code résolu.

public void resetButtons() 
{ 
    for(int i = 0; i <= 8; i++) 
    { 
     buttons[i].setText(""); 
     buttons[i].setEnabled(true); 
    } 


} 

private class buttonListener implements ActionListener 
{ 

    public void actionPerformed(ActionEvent e) 
    { 
     JButton newTurn = (JButton)e.getSource(); 
     if(switchMove%2 == 0) 
      newTurn.setText("X"); 
     else 
      newTurn.setText("O"); 

     if(newTurn.isEnabled()) 
      newTurn.setEnabled(false); 

     if(checkForWin() == true) 
     { 
      JOptionPane.showConfirmDialog(null, "Game Over."); 
      resetButtons(); 
     } 

     switchMove++; 
    } 

Dans la méthode actionPerformed(), j'ai défini les boutons sur setEnabled (false) après avoir cliqué sur un bouton. Ensuite, quand une partie est terminée, les boutons qui ont été précédemment désactivés seront mis à setEnabled (true) via la méthode resetButtons.