我开始为国际象棋游戏作业制作一个 8 x 8 方板。但是,我想知道是否有任何提示可以在 Java 中创建正方形而不是 2D 数组。
分配的限制之一不允许使用 2D 数组或任何类似的。没有人工智能,只有用户控制。
您可以使用一维数组,比如说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;
}
您可以使用一维数组,或者ArrayList
然后除以 8 并使用结果和余数来知道您需要去哪一列和哪一行。
然后,您可以反过来获取数组中相应棋盘部分的位置。
您还可以使用地图:
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);
}
我没有Java的工作知识,我下棋并做一些Delphi编程。我不知道 Java 的位操作功能。
但是,我建议你研究一下Bitboard数据结构并在网上搜索基于它的开源国际象棋引擎。
这在 C++ 世界中是司空见惯的。
也许你一开始甚至不创建一个正方形就可以侥幸逃脱?
表示棋盘的另一种方法是仅列出棋子及其各自的坐标。