Java 为国际象棋游戏创建棋盘演示文稿
我开始制作一个8 x 8的正方形棋盘,用于下棋任务。但是,我想知道是否有什么提示可以在Java中创建正方形而不是2D数组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
分配的限制之一是不允许使用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