4

我开始为国际象棋游戏作业制作一个 8 x 8 方板。但是,我想知道是否有任何提示可以在 Java 中创建正方形而不是 2D 数组。

分配的限制之一不允许使用 2D 数组或任何类似的。没有人工智能,只有用户控制。

4

5 回答 5

8

您可以使用一维数组,比如说Figure [] board = new Figure[64]并制作一个简单的 getter/setter 方法来模拟二维:

Figure get(int hor, int vert) {
  return board[hor*8+ver];
}

void set(int hor, int vert, Figure f) {
  board[hor*8+ver] = f;
}
于 2011-12-09T08:17:12.270 回答
3

您可以使用一维数组,或者ArrayList然后除以 8 并使用结果和余数来知道您需要去哪一列和哪一行。

然后,您可以反过来获取数组中相应棋盘部分的位置。

于 2011-12-09T08:17:56.200 回答
2

您还可以使用地图:

private Map<String, Figure> board = new HashMap<String, Figure>();

private String positionToString(int hor, int vert) {
    return hor + " " + vert;
}

public Figure get(int hor, int vert) {
    return board.get(positionToString(hor, vert));
}

public void set(int hor, int vert, Figure fig) {
    board.put(positionToString(hor, vert), fig);
}
于 2011-12-09T08:20:03.483 回答
2

我没有Java的工作知识,我下棋并做一些Delphi编程。我不知道 Java 的位操作功能。

但是,我建议你研究一下Bitboard数据结构并在网上搜索基于它的开源国际象棋引擎。

这在 C++ 世界中是司空见惯的。

于 2011-12-09T08:29:27.570 回答
1

也许你一开始甚至不创建一个正方形就可以侥幸逃脱?

表示棋盘的另一种方法是仅列出棋子及其各自的坐标。

于 2011-12-09T12:21:23.650 回答