このコードが意図したとおりに機能しない理由がわからないので、私がそれを理解するのを手伝ってくれることを願っています。私は、jbuttonsを使用する一連のチュートリアルから三目並べゲームに取り組んでいます。私が持っているのは、ボタンがクリックされるたびに「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;
}
}
}
このコードは、checkforwinメソッドを格納するmain.javaの一部です。コードの勝ちチャンクのチェックは、プレーヤー1とコンピューター(プレーヤー2)の両方の三目並べで勝つ可能性があるたびに複数回繰り返されます。
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を出力しますが、条件内で印刷されることはありません。
どんな助けやアドバイスも大歓迎です!