チェスゲームの割り当てのために8 x 8の四角いボードを作成し始めています。しかし、Javaの2D配列ではなく正方形を作成するためのヒントがあれば疑問です。チェスゲームのためのボードプレゼンテーションの作成
割り当ての制限の1つでは、2D配列などを使用できません。 AIはありませんが、ユーザーコントロールのみです。
チェスゲームの割り当てのために8 x 8の四角いボードを作成し始めています。しかし、Javaの2D配列ではなく正方形を作成するためのヒントがあれば疑問です。チェスゲームのためのボードプレゼンテーションの作成
割り当ての制限の1つでは、2D配列などを使用できません。 AIはありませんが、ユーザーコントロールのみです。
あなたは、一次元アレイを使用Figure [] board = new Figure[64]
言うと2次元をエミュレートするために、単純なゲッター/セッターメソッドを作ることができる。
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で割ることができ、および結果と残りを使用して、どの列と行を移動する必要があるかを知ることができます。
これで、対応するチェスボードセクションの配列内の位置を取得することができます。
あなたはまた、地図を使用することができます。
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);
}
私は、Javaのない実用的な知識を持っていない、私はチェスをすると、いくつかのDelphiのプログラミングを行います。私はJavaのビット操作能力について全く知らない。
しかし、私はBitboardデータ構造について調査し、それに基づいてオープンソースのチェスエンジンをネット上で検索することをお勧めします。
これはC++の世界では一般的です。
おそらく、最初の場所に正方形を作成していなくてもうまくいけますか?
チェスボードを表現する別の方法は、単なるピースのリストとそれぞれの座標です。
あまりにも似ていない場合は、1D配列を使用できます。 – Thilo