0

不确定为什么这段代码没有按预期工作,希望你能帮我弄清楚。我正在从一系列使用 jbuttons 的教程中开发一个 tictactoe 游戏。我的主类中有一个方法,每次单击按钮时都会“checksforwin”。使用打印语句,我发现每次单击按钮时我的方法都会运行,但是 getText().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;
        }
    }
}

这段代码是我的 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,但它永远不会在条件内打印。

任何帮助或建议将不胜感激谢谢!

4

2 回答 2

1

我的猜测是它没有拾取按钮文本更改-在按钮文本更改(button1.setText("X");)等之后-您需要再次将其添加到面板中,因此panel.add(button1);或它们存储的任何内容

于 2012-05-29T11:00:08.610 回答
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 的水平或垂直按钮。

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

我希望它有帮助!

于 2012-05-29T10:55:56.657 回答