我正在尝试用Java编写自己的国际象棋游戏。 我已经开始编写类,我的高层次思路如下:
我有一个Piece类,其中包含以下字段:
private String name;
private String color;
最初我想为每个棋子设置x和y坐标,但这似乎更像是棋盘的属性。这就引出了...
我有一个Board类,其中包含以下字段:
Piece[][] myBoard = new Piece[8][8];
我不确定在哪里/如何跟踪棋子的位置。目前,我只有一个 Piece 对象的二维数组。然而,我认为这会带来一些挑战。例如,假设用户点击了一个棋子并想要移动它。我需要弄清楚移动是否有效,为此,我需要知道棋子所在的当前方格。
如果每个棋子都有 x 和 y 坐标,那么我就需要在两个地方更新游戏状态(在 Board 类的二维数组中和当前棋子的 x 和 y 坐标中)。这似乎不太好...
有什么建议吗?
感谢您的帮助, Mariogs
enum Name { PAWN, ROOK, KNIGHT, BISHOP, KING, QUEEN }``enum Color { BLACK, WHITE }
。 - Paul BoddingtonChessGame
或者ChessRules
。如果你这样做了,那么你可以很容易地将相同的类用于棋子和棋盘,如果你想要实现跳棋,你只需要创建一个CheckersGame
。 - Jared