(国际象棋)返回棋子可能移动的功能 我写了一个C++象棋游戏,我有一个抽象的类和继承它的类。类有纯的虚拟方法,返回所有可能的动作。但是我有一个典当位置的问题,因为每个棋子只能向前移动,但是在棋盘上(棋子的矩阵)。对于每个玩家,前进看起来都不一样。我如何为棋子实现可能移动()? 谢谢 类块 { 公众: 工件(标准:字符串、字符垂直位置、字符水平位置); 虚拟std::pair*possibleMoves()常量=0; 虚拟~Piece(); 受保护的: std::字符串名; std::对初始位置; std::配对位置; };

(国际象棋)返回棋子可能移动的功能 我写了一个C++象棋游戏,我有一个抽象的类和继承它的类。类有纯的虚拟方法,返回所有可能的动作。但是我有一个典当位置的问题,因为每个棋子只能向前移动,但是在棋盘上(棋子的矩阵)。对于每个玩家,前进看起来都不一样。我如何为棋子实现可能移动()? 谢谢 类块 { 公众: 工件(标准:字符串、字符垂直位置、字符水平位置); 虚拟std::pair*possibleMoves()常量=0; 虚拟~Piece(); 受保护的: std::字符串名; std::对初始位置; std::配对位置; };,c++,matrix,chess,C++,Matrix,Chess,将典当可以移动到其构造函数中的方向作为参数传递,并作为成员变量存储。在确定典当的可能移动时使用此选项。正如BobTFish在评论中所说的,典当对象应该知道它的位置 颜色至于这个立场,我想我会把它当作一个论点 到可能移动;你可能还必须通过董事会,所以 possibleMoves可以检测到捕获的移动(和 passant,它变得更复杂,因为它只在 第一次出现这种可能性时。)我想典当应该知道:1)它是什么颜色,2)它现在的位置是什么。然后白色的棋子从低到高(从第2行开始),黑色的棋子从高到低(从第7行开

将典当可以移动到其构造函数中的方向作为参数传递,并作为成员变量存储。在确定典当的可能移动时使用此选项。

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

我想典当应该知道:1)它是什么颜色,2)它现在的位置是什么。然后白色的棋子从低到高(从第2行开始),黑色的棋子从高到低(从第7行开始)(我假设在标准国际象棋中是1-索引)。你为什么要返回一对
char
s的指针?返回
std::vector
,而不是
std::pair*
。喂,我的爪子累了。
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;
};