2012-05-29 3 views
0

이 코드가 의도 한대로 작동하지 않는 이유에 대해 확신하지 못해서 알아낼 수 있기를 바랍니다. 나는 jbuttons를 사용하는 일련의 자습서에서 tictactoe 게임을 연구 중이다. 내가 가지고있는 것은 메인 클래스에서 버튼을 클릭 할 때마다 "checksforwin"이라는 메서드입니다. print 문 사용하기 getText(). equals ("_") 조건은 제대로 작동하지 않지만 버튼을 클릭 할 때마다 내 메서드가 실행되는 것을 발견했습니다.TicTacToe 게임에 문제가 있습니까? getText(). jButton을 사용하여 equals() 사용

이 코드는 내 tictactoe.java의 일부이며 제대로 작동합니다. 이 이벤트는 각 버튼에 대해 9 번 복사됩니다.

public void button1ActionPerformed(ActionEvent e) { 
    if(button1.getText().equals("")){ 
     if(Main.playerTurn==true){ 
      button1.setText("X"); 
      Main.checkforwin(); 
      Main.playerTurn = false; 
     }else{ 
      button1.setText("O"); 
      Main.checkforwin(); 
      Main.playerTurn = true; 
     } 
    } 
} 

이 코드는 checkforwin 메소드가 포함 된 main.java의 일부입니다. 플레이어 1과 컴퓨터 2 (player2)에 대해 tictactoe에서 각 가능한 승리에 대해 코드의 승리 청크에 대한 확인이 여러 번 반복됩니다.

public class Main { 

public static boolean playerTurn = true; 
public static boolean playerWon = false;  
public static boolean computerWon = false; 

public static tictactoe board = new tictactoe(); 

public static void checkforwin(){ 
System.out.println("testing1"); 
    //horizontal row 1 
    if(board.button1.getText().equals("X")){ 
     System.out.println("testing2"); 
     if(board.button2.getText().equals("X")){ 
      if(board.button3.getText().equals("X")){ 
       playerWon = true; 
       computerWon = false; 
       System.out.println("Player 1 won"); 
      } 
     } 
    } 

}

방법은 출력 testing1 버튼을 클릭 할 때마다, 그러나 그것은 조건 내에서 인쇄하지 않을 것입니다.

도움이나 조언을 주시면 감사하겠습니다.

+1

에 저장하든 'System.out.println (board.button1.getText())'. –

+0

버튼 텍스트 인쇄 또는 코드 디버깅은 어떻게됩니까? – Andreas

+0

빠른 응답을 주셔서 감사합니다, 나는 checkforwin 메서드의 맨 위에 놓았습니다. 그러나 System.out.println ("임의의 텍스트")으로 바꾸면 아무것도 인쇄되지 않습니다. –

답변

1

내 생각 엔 그 버튼 텍스트 변경을 따기하지 않습니다와 진단 그렇게 다시 패널에 panel.add(button1);를 추가해야하거나 그들이

1

코딩을 빠르게 살펴 보았지만 조건부 IF 문에서 AND 연산자를 사용해보아야합니다. 예를 들어 :

if(board.button1.getText().equals("X") && board.button2.getText().equals("X") && board.button3.getText().equals("X")){ 
      playerWon = true; 
      computerWon = false; 
      System.out.println("Player 1 won"); 
     } 

당신은

아마 생각보다 효율적인 방법이

수평 또는 수직 버튼과 동일한 X 또는 O.을 제공하거나 플레이어/컴퓨터가 수상했다 말을 조건문 이러한 유형을 사용할 수 있습니다 그러나 그것을하는 것은 나에게 일어났던 첫번째 생각이다. 그래서 당신은 그것을 시험해 볼 수 있었다!

도움이 되었기를 바랍니다. 등의 버튼 텍스트 변경 (button1.setText("X");) 후 - -

+0

어쨌든이 코드를 사용하면 코드가 눈에 띄지 않게됩니다. 감사 –

관련 문제