国际象棋C ++控制台游戏,区分白色与黑色

时间:2018-12-09 12:00:55

标签: c++ console chess

我正在用C ++编写一个国际象棋游戏机,作为我们编程类中的一项任务。我已经完成了打印功能,并输入了用于移动作品的输入,效果很好。

现在是时候使这些功能检查移动是否有效。而且我已经很难尝试区分黑色和白色。

因为白色总是开始,所以第一步只能由白色完成。

因此,我对所有部分进行了构造:

struct chesspiece
{
    string pieceName;
    char pieceColor;
    int pieceValue;
};

我在控制台上的输出是一个字符串数组:

const int ROWS = 8;
const int COLS = 8;

string chessboard[ROWS][COLS] = 
{
    chessPiece.pieceName etc.
};

现在,我正在尝试创建一个函数,以检查移动的第一个棋子是否为白色,但是由于字符串数组中只有chessPiece.pieceName,所以我找不到结构和字符串数组之间的连接,并且不是实际的pieceColor变量。 struct数组可以更好地构建它吗?还是有其他东西?

1 个答案:

答案 0 :(得分:0)

为什么在作品名称中不包含作品的颜色?更好的是,使用枚举代替字符串。像这样的东西:

enum {
    Empty,
    WhitePawn, WhiteRook, WhiteKnight, ...
    BlackPawn, ...
};

或者,如果您觉得可以轻松理解每个符号,则甚至可以使用代表每个棋子的符号(这些符号对于国际象棋棋手是众所周知的)。

enum {
    Empty,
    WP, WR, WN, ...
    BP, ...
};