小编Sam*_*zym的帖子

有没有办法加快国际象棋中的“检测检查”方法?

我正在开发一个 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)

java javafx

6
推荐指数
1
解决办法
894
查看次数

标签 统计

java ×1

javafx ×1