2012-05-29 137 views
0

不确定为什么此代码不按预期工作,并希望你能帮我弄明白。我正在从一系列使用jbutton的教程开始开发tictactoe游戏。我有什么是我的主要类中的一个方法,每次点击一个按钮时都会“检查forwin”。使用print语句,我发现每次单击按钮时都会运行方法,但getText()。equals(“_”)条件无法正常运行。在java中TicTacToe游戏的问题?使用getText()。equals()与jButtons

此代码是我的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; 
     } 
    } 
} 

此代码是我的main.java的一部分,其中包含checkforwin方法。对于玩家1和计算机(玩家2)来说,对于每个可能的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

我的猜测是它不拾取按钮上的文字变化 - 按钮上的文字变化(button1.setText("X");)等之后 - 你需要再次添加到面板,所以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

有可能是虽然一个更有效的方法尽管这样做,但这是我想到的第一个想法,所以你可以尝试一下!

我希望它有帮助!

+0

无论如何,我这样做,因为它使我的代码少得多的眼睛!谢谢 –