Java中的棋盘游戏实现

时间:2015-04-26 12:09:46

标签: java implementation class-diagram

首先,我不确定是否允许提出这类问题。因此,我正在尝试创建一个棋盘游戏,并且我坚持执行为Piece生成有效的移动。这是类图的摘录。

Class Diagram

你可以认为这个棋盘游戏就像国际象棋,所以我们需要知道其他棋子的位置,同时产生有效的动作。问题是我不知道如何检查它。我的班级图是错的吗?或者我每次检查广场时都应该检查一下?我怎么用Java做到这一点?谢谢你的帮助。

1 个答案:

答案 0 :(得分:3)

这件作品不应该决定它的有效动作是什么,它应该只知道它的位置以及它是如何移动的。它不对这种逻辑负责。

董事会应该管理是否允许这样做(也就是说,它需要一个能够返回其可能移动的部分,然后返回有效的移动)。

Piece类公开了getPossibleMoves方法,该方法返回了可以到达的位置列表:

public List<Square> getPossibleMoves(){ // might want to differentiate types of moves

然后,棋盘类有一个getValidMoves方法,它接受一个片段并返回其有效移动。

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());
}