【发布时间】:2013-07-09 15:59:47
【问题描述】:
我正在编写一个 C++ 国际象棋游戏。我有一个抽象类 Piece 和继承它的类。Class Piece 有纯虚方法,它返回所有可能的移动。但是我有一个棋子位置问题,因为对于每个玩家棋子只能向前移动,但在棋盘(即棋子矩阵)中,每个玩家的向前似乎都不同。如何为 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;
};
【问题讨论】:
-
我认为棋子会知道:1)它是什么颜色,2)它的当前位置是什么。然后白兵从低数字移动到高数字(它们从第 2 行开始),黑棋从高数字移动到低数字(它们从第 7 行开始)(我假设标准国际象棋中的 1 索引algebraic notation)。
-
你为什么要返回一个指向一对
chars的指针? -
返回
std::vector<std::pair<char, char>>,而不是std::pair<char, char>*。 -
请喂喂喂,我的爪子累了。