在国际象棋中搜索国王的每一个方向
Search every directions from the king in chess
我正在下棋。我正在寻找在每一步之后检查国王在各个方向的威胁的最佳算法。我做了一个像这样的非常基本的算法:
public boolean inDanger(Board board) {
for (int i = this.column + 1; i < 8; i++) {
if (board.findPiece(this.row, i) instanceof Rook ||
board.findPiece(this.row, i) instanceof Queen) {
System.out.println("Check from right side");
return true;
}
}
}
而且我每个方向都在做这个,所以我想问一下是否有更好的解决方案。
而不是做整个 instance of
事情...创建一个抽象 class Piece
并使 Queen
和 Rook
subclass是的。创建一个抽象方法,例如...我不知道 evaluateMove()
并让每个子 class 都有自己的 evaluateMove()
.
实现
然后在一个棋子走完之后,evaluateMove()
将这个棋子可以走的所有可用棋子存储在一个二维数组中。正如@Cray 在上面的评论中所说,这些片段中的每一个都存储在一个数组中。摘要 class Piece
将帮助您将每个片段存储在同一个数组中。
如果国王碰巧占据了一个可以移动的方格,那么您就知道他处于被检查状态,或者最坏情况下是被检查队友。您需要在每次移动后更新 Piece
的整个潜在移动列表数组,因为将棋子移进移出可能会改变国王是否真的处于危险之中。
祝你好运
我正在下棋。我正在寻找在每一步之后检查国王在各个方向的威胁的最佳算法。我做了一个像这样的非常基本的算法:
public boolean inDanger(Board board) {
for (int i = this.column + 1; i < 8; i++) {
if (board.findPiece(this.row, i) instanceof Rook ||
board.findPiece(this.row, i) instanceof Queen) {
System.out.println("Check from right side");
return true;
}
}
}
而且我每个方向都在做这个,所以我想问一下是否有更好的解决方案。
而不是做整个 instance of
事情...创建一个抽象 class Piece
并使 Queen
和 Rook
subclass是的。创建一个抽象方法,例如...我不知道 evaluateMove()
并让每个子 class 都有自己的 evaluateMove()
.
然后在一个棋子走完之后,evaluateMove()
将这个棋子可以走的所有可用棋子存储在一个二维数组中。正如@Cray 在上面的评论中所说,这些片段中的每一个都存储在一个数组中。摘要 class Piece
将帮助您将每个片段存储在同一个数组中。
如果国王碰巧占据了一个可以移动的方格,那么您就知道他处于被检查状态,或者最坏情况下是被检查队友。您需要在每次移动后更新 Piece
的整个潜在移动列表数组,因为将棋子移进移出可能会改变国王是否真的处于危险之中。
祝你好运