0

我正在编写一个 C++ 国际象棋游戏。我有一个抽象类 Piece 和继承它的类。类 Piece 具有纯虚拟方法,可以返回所有可能的移动。但是我对棋子位置有问题,因为每个玩家的棋子只能移动前进,但在棋盘(这是棋子的矩阵)中,每个玩家的前进似乎都不同。如何为棋子实现possibleMoves()?谢谢!

class Piece
{
    public:
        Piece(std::string, char verticalPosition, char horizontalPosition);

    virtual std::pair<char,char>* possibleMoves() const = 0;
    virtual ~Piece();
protected:
    std::string name;
    std::pair <char,char> initPosition;
    std::pair <char,char> currPosition;
};
4

2 回答 2

0

将 pawn 可以移动到其构造函数中的方向作为参数传递并存储为成员变量。在确定棋子的可能移动时使用它。

于 2013-07-09T16:02:41.703 回答
0

正如 BobTFish 在评论中所说,pawn 对象应该知道它的颜色。至于职位,我想我会将其作为论据传递给possibleMoves; 您可能还必须通过棋盘,以便possibleMoves可以检测被捕获的动作(以及过路,这变得更加复杂,因为它仅在第一次出现可能性时才有效)。

于 2013-07-09T16:49:43.137 回答