2017-10-14 1 views
0

초보 프로그래머가 Tic Tac toe GUI 게임을 만들려고 여기에 있습니다. 나는 내 프로그램에 붙어있다. 같은 광장을 두 번 치는 법을 어떻게 세우는 지 잘 모르겠습니다. 나는클릭하면 Jbutton이 변경되지 않습니다.

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 
} 

일하는 것이하지만이 제대로 작동 할 수있는 프로그램을 얻을 수 없다고 내의 actionListener 안에 if 문을 생각했다. 나는 newTurn.getmodel(). isPressed()를 시도했으나 작동하지 않았고 현재 현재 코드에서 각 이동 후에 오류 메시지가 출력되고 보드에 변경 사항이 계속 표시됩니다. 이 메서드에 대한 내 코드는 다음과 같습니다. 어떤 도움을 주셔서 감사합니다.

private class buttonListener implements ActionListener 
{ 

    public void actionPerformed(ActionEvent e) 
    { 
     JButton newTurn = (JButton)e.getSource(); //get the particular button that was clicked 
     if(switchMove%2 == 0) 
      newTurn.setText("X"); 
     else 
      newTurn.setText("O"); 

     if(newTurn.isEnabled()) 
      JOptionPane.showMessageDialog(null, "ERROR", "Button already used. Please hit again to change back", JOptionPane.ERROR_MESSAGE); 

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

     switchMove++; 
    } 

스위치 이동은 0으로 설정되는 int이므로 evens는 X와 O가 홀수입니다. 내 if (newTurn.isEnabled())가 내 문제입니다.

+0

'JToggleButton'을 사용하거나 추가 상호 작용에서 버튼을 사용 중지합니다. – MadProgrammer

답변

0

여기 내 해결 된 코드가 있습니다.

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++; 
    } 

actionPerformed() 메서드에서 버튼을 클릭 한 후에 버튼을 setEnabled (false)로 설정했습니다. 그런 다음 게임이 끝나면 이전에 비활성화 된 버튼이 resetButtons 메서드를 통해 setEnabled (true)로 설정됩니다.

관련 문제