Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为国际象棋游戏创建棋盘演示文稿_Java_Arrays_Chess - Fatal编程技术网

Java 为国际象棋游戏创建棋盘演示文稿

Java 为国际象棋游戏创建棋盘演示文稿,java,arrays,chess,Java,Arrays,Chess,我开始制作一个8 x 8的正方形棋盘,用于下棋任务。但是,我想知道是否有什么提示可以在Java中创建正方形而不是2D数组 分配的限制之一是不允许使用2D数组或任何类似的数组。没有人工智能,只有用户控制。您可以使用一维数组,比如说图[]板=新图[64],并创建一个简单的getter/setter方法来模拟二维: Figure get(int hor, int vert) { return board[hor*8+ver]; } void set(int hor, int vert, Figu

我开始制作一个8 x 8的正方形棋盘,用于下棋任务。但是,我想知道是否有什么提示可以在Java中创建正方形而不是2D数组


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

您可以使用一维数组,比如说
图[]板=新图[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,然后使用结果和余数知道需要转到哪一列和哪一行

然后,您可以通过另一种方式获得相应棋盘区在数组中的位置。

您还可以使用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);
}
private Map board=new HashMap();
私有字符串位置字符串(int hor、int vert){
返回hor+“”+vert;
}
公众人物获取(int hor,int vert){
返回板。获取(位置字符串(hor,vert));
}
公共空白集(内部水平,内部垂直,图fig){
板放置(位置串(水平、垂直),图;
}

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

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


<>这是C++世界中的一个普遍现象。

< p>也许YuCuN在一开始就连创建一个正方形都没有?
另一种表示棋盘的方法是列出棋子及其各自的坐标。

如果不太相似,可以使用1D数组。此处不需要进行贴图和stringint转换。这只会导致性能损失。@NikitaBeloglazov:那么?尝试一个
std::pair
?如果我们使用Map:)不知道问题的背景,但如果我们将计算棋盘树中所有可能的位置(可能是解决棋盘问题或编写AI),则在不更改代码的情况下,很容易切换到任何维度的棋盘,我可以向您保证,您的代码的运行速度至少比简单的2d阵列板表示法慢3倍。@sehe java没有std::pair