Java中的棋盘游戏实现

首先,我不确定是否可以问这种问题.因此,我试图创建一个棋盘游戏,而我被困在为Piece生成有效招式的实现中.这是类图的摘录.

您可以将这种棋盘游戏视为国际象棋,因此我们在生成有效棋步时需要知道其他棋子的位置.问题是我不知道如何检查.我的班级图错了吗?还是应该在每次检查正方形时在板上检查?以及如何在Java中做到这一点?感谢您的帮助.

解决方法:

棋子不应该决定其有效移动是什么,而应该只知道它在哪里以及如何移动.它不负责这种逻辑.

董事会应管理是否允许这样做(也就是说,需要花费一块棋子将其可能的动作返回给它,然后返回有效的动作).

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

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

然后,board类具有一个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());
}
上一篇:2021 打算图书清单


下一篇:c#-可以由数据库类派生的抽象类