我正在写一个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;
};
答案 0 :(得分:0)
传递pawn可以作为参数移动到其构造函数中的方向并存储为成员变量。在确定pawn的可能移动时使用它。
答案 1 :(得分:0)
正如BobTFish在评论中所说,pawn对象应该知道它
颜色。至于这个位置,我想我会把它作为一个论点
到possibleMoves
;你可能也必须通过董事会,所以
possibleMoves
可以检测到捕获的移动(和en
passant,它变得更复杂,因为它只是有效的
第一次出现可能性)。