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