チェスゲームの課題用に 8 x 8 の正方形のボードを作り始めています。ただし、Javaで2D配列ではなく正方形を作成するためのヒントがあるかどうか疑問に思っています。
割り当ての制限の 1 つは、2D 配列または類似のものを使用することを許可しません。AI はなく、ユーザー コントロールのみです。
たとえば、1 次元配列を使用Figure [] board = new Figure[64]
して、2 次元をエミュレートする単純な 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 次元配列を使用するか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);
}
そもそも正方形を作成しなくても済むのではないでしょうか?
チェス盤を表す別の方法は、駒とそれぞれの座標のリストです。