Derzeit in den Prozess eines Schachspiels, während der Code für "CheckMate", habe ich ein Problem, wo die if-Anweisung nicht ausgeführt, obwohl alle Bedingungen wurden getroffen.Alle Bedingungen für If-Anweisung erfüllt, aber es wird nicht ausgeführt
if (boardCopy[x][y] != null)
{
System.out.print(boardCopy[x][y].getColour() + " == " + turn.charAt(0)+" && "+ boardCopy[x][y].getName().substring(0,2)+" == ki && Checkmate == "+ CheckMate[x][y]);
if (boardCopy[x][y].getColour() == turn.charAt(0) && boardCopy[x][y].getName().substring(0,2) == "ki" && CheckMate[x][y])
{
System.out.println(turn + "'s King is in Check");
check = true;
}
System.out.println(" | Check = "+check);
}
Die Ausgabe des Kodex (der wichtige Rolle, da es in einer for-Schleife war es mehrfach
W == W && ki == ki && Checkmate == true | Check = false
Alle Bedingungen erfüllt sind mit leichten Variationen wiederholt wurde noch der Code nicht ausgeführt wird Gedanken (alle Variablentypen sind korrekt, kein Rechtschreibfehler, W bezieht sich auf die Farbe des Stücks, ki sind die ersten beiden Buchstaben des Namens des Stücks ("König"), Schachmatt ist ein boolesches Array, das angibt, wo sich ein Ort befindet von einem feindlichen Stück "angegriffen" zu werden.)
Beachten Sie, dass auf Ihre letzte Bedingung haben Sie eine Aufgabe, kein Gleichheitstest. Außerdem gibt es keine Notwendigkeit für "if (x == true || y == false)", das ist nur "if (x ||! Y)". –
Sie drucken also einige der Werte aus, was für das Debugging gut ist, aber noch besser, versuchen Sie, die tatsächlichen booleschen Werte, die Sie überprüfen, auszudrucken. Zum Beispiel versuchen Sie, 'boardCopy [x] [y] .getName(). Substring (0,2) == "ki" 'zu drucken. Das Ergebnis kann falsch sein, auch wenn die Zeichenfolge gleich "ki" ist. –