Java 中的棋盘游戏实施
Board Game Implementation in Java
首先,我不确定是否允许问这种问题。所以我正在尝试创建一个棋盘游戏,但我一直坚持为 Piece 生成有效动作的实现。这是 class 图的摘录。
你可以把这个棋盘游戏想象成国际象棋,所以我们需要知道其他棋子的位置,同时生成有效的走法。问题是我不知道如何检查它。我的 class 图错了吗?还是每次我检查一个方格时都应该在棋盘上检查?我如何在 Java 中做到这一点?感谢您的帮助。
棋子不应该决定它的有效移动是什么,它应该只知道它在哪里以及它如何能够移动。它不负责那种逻辑。
棋盘应该管理是否允许这样做(也就是说,它需要一块 returns 它可能移动到它的棋子,然后 returns 有效移动)。
Piece
class公开了一个getPossibleMoves
方法,returns它可以到达的位置列表:
public List<Square> getPossibleMoves(){ // might want to differentiate types of moves
然后,棋盘 class 有一个 getValidMoves
方法,它取一个棋子并且 returns 它的有效移动。
public List<Square> getValidMoves(Piece piece) {
return piece.getPossibleMoves().
stream(). // and filter by
filter(move -> isOnValidBoardCoordinate(move)). // can shorten
filter(move -> doesNotIntersectOtherPiece(move)).
filter(move -> otherValidation(move)).
collect(Collectors.toList());
}
首先,我不确定是否允许问这种问题。所以我正在尝试创建一个棋盘游戏,但我一直坚持为 Piece 生成有效动作的实现。这是 class 图的摘录。
你可以把这个棋盘游戏想象成国际象棋,所以我们需要知道其他棋子的位置,同时生成有效的走法。问题是我不知道如何检查它。我的 class 图错了吗?还是每次我检查一个方格时都应该在棋盘上检查?我如何在 Java 中做到这一点?感谢您的帮助。
棋子不应该决定它的有效移动是什么,它应该只知道它在哪里以及它如何能够移动。它不负责那种逻辑。
棋盘应该管理是否允许这样做(也就是说,它需要一块 returns 它可能移动到它的棋子,然后 returns 有效移动)。
Piece
class公开了一个getPossibleMoves
方法,returns它可以到达的位置列表:
public List<Square> getPossibleMoves(){ // might want to differentiate types of moves
然后,棋盘 class 有一个 getValidMoves
方法,它取一个棋子并且 returns 它的有效移动。
public List<Square> getValidMoves(Piece piece) {
return piece.getPossibleMoves().
stream(). // and filter by
filter(move -> isOnValidBoardCoordinate(move)). // can shorten
filter(move -> doesNotIntersectOtherPiece(move)).
filter(move -> otherValidation(move)).
collect(Collectors.toList());
}