跳棋程序的设计

Mad*_*813 1 c++ oop

我正在开发一款西洋跳棋游戏,并且正在进入“实际实现游戏”部分,该部分位于“获取事物渲染”部分之后。目前我的作品的逻辑是这样的:

struct Square {
    Piece * piece;
}

struct Piece {
    bool king;
    Color color;
}
Run Code Online (Sandbox Code Playgroud)

以及渲染方法和类似的东西。其背后的想法是,方块有时可能是空的,在这种情况下,方块中的指针可以为空。但是,结构体只是用来保存指针的想法让我感到困扰。我的问题是这是否是一个好主意,或者我是否是个白痴并且使事情过于复杂化。

小智 5

你把事情搞得太复杂了。实际上没有必要唯一地识别和跟踪跳棋游戏中的每个棋子;只需知道给定方格中存在一个棋子可能就足够了。因此:

enum CheckersPiece {
    SQUARE_EMPTY       = 0,
    SQUARE_BLACK_PIECE = 1,
    SQUARE_BLACK_KING  = 2,
    SQUARE_RED_PIECE   = -1,
    SQUARE_RED_KING    = -2,
};

enum CheckersPiece board[8][4];
Run Code Online (Sandbox Code Playgroud)

枚举中的值是专门选择的,以便您可以检查值的符号来确定块颜色,并检查绝对值来检查其类型。

请注意,棋盘是 8x4 而不是 8x8,因为棋盘每行上只有四个方块可用于棋子。(您可以将其设为 8x8,但是您必须小心,仅使用“有效”位置。)