不确定为什么此代码无法按预期工作,希望您能帮助我弄明白。我正在从一系列使用jbuttons的教程中学习tictactoe游戏。我所拥有的是我的主类中每次单击按钮时“checksforwin”的方法。使用print语句我发现每次单击按钮时我的方法都会运行,但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和计算机(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,但它永远不会在条件内打印。
非常感谢任何帮助或建议,谢谢!
答案 0 :(得分: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.
尽管如此,这可能是一种更有效的方法,但这是我想到的第一个想法,所以你可以尝试一下!
我希望它有所帮助!
答案 1 :(得分:1)
我的猜测是它没有取消按钮文本更改 - 在按钮文本更改后(button1.setText("X");
)等 - 您需要再次将其添加到面板中,因此panel.add(button1);
或其他任何内容存储在