为国际象棋游戏创建董事会演示文稿

时间:2011-12-09 08:10:58

标签: java arrays chess

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

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

5 个答案:

答案 0 :(得分:7)

你可以使用一维数组,比如说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;
}

答案 1 :(得分:3)

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

然后你可以反过来工作以获得相应国际象棋棋盘区的阵列中的位置。

答案 2 :(得分:2)

您也可以使用Map:

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);
}

答案 3 :(得分:2)

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

但是,我建议您调查Bitboard数据结构,并在网上搜索基于它的开源国际象棋引擎。

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

答案 4 :(得分:1)

也许你甚至可以在第一时间创造一个广场而逃脱?

表示国际象棋棋盘的另一种方式只是一个棋子列表及其各自的坐标。