我正在开发一个 JavaFX 国际象棋应用程序,我正在尝试实现一种方法来检测黑白王是否处于受制状态。它有效,但即使我只在用户每次移动棋子时调用它,它仍然严重滞后于应用程序。它的工作原理是检测相反颜色的所有可能的动作,然后检查这些动作中是否有任何一个属于国王的位置。有什么办法可以制定出更有效的方法吗?
private boolean getCheck(String colour) {
ArrayList<int[]> totalMoves = new ArrayList<int[]>();
ArrayList<int[]> pieceMoves = new ArrayList<int[]>();
int kingRow = 0;
int kingColumn = 0;
if (colour.equals("BLACK")) {
for (int i = 0; i < chessPieces.size(); i++) {
if (chessPieces.get(i).getPiece().equals("BLACKKING")) {
kingRow = chessPieces.get(i).getRow();
kingColumn = chessPieces.get(i).getColumn();
}
}
for (int i = 0; i < chessPieces.size(); i++) {
if (chessPieces.get(i).getPiece().contains("WHITE")) {
pieceMoves = showPossibleMoves(new int[]{
chessPieces.get(i).getColumn(),
chessPieces.get(i).getRow()
}, chessPieces);
for (int j = 0; j < pieceMoves.size(); j++) …Run Code Online (Sandbox Code Playgroud)