(国际象棋游戏)返回可能的棋子移动的功能

时间:2013-07-09 15:59:47

标签: c++ matrix chess

我正在写一个C ++国际象棋游戏。我有一个抽象类Piece和继承它的类.Class Piece有纯虚方法返回所有可能的移动。但我有一个pawn位置的问题,因为对于每个玩家pawn只能向前移动,但在棋盘中(这是棋子的矩阵)前进对于每个玩家来说都是不同的。我如何为棋子实施 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;
};

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

正如BobTFish在评论中所说,pawn对象应该知道它 颜色。至于这个位置,我想我会把它作为一个论点 到possibleMoves;你可能也必须通过董事会,所以 possibleMoves可以检测到捕获的移动(和en passant,它变得更复杂,因为它只是有效的 第一次出现可能性)。