我正在制作一个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,使用商和余数来确定所在的列和行。我对Java没有实际的工作经验,我会下棋并编写一些Delphi程序。我不知道Java的位操作能力。
但是,我建议您研究一下Bitboard数据结构,并在网络上搜索基于它的开源国际象棋引擎。
这在C++世界很常见。
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);
}
也许你甚至可以不用一开始就创建一个正方形?
另一种表示棋盘的方法是仅使用棋子及其相应坐标的列表。