-4

JPanelを使ってJavaでチェスゲームを作る際、コンテナに何か入っているかどうかを返すメソッドはありますか? たとえば、次のような配列を定義することにより: JPanel [8][8] プレイヤーの動きが合法かどうかを確認できるように、正方形 [i][j] に男性がいるかどうかを確認します。それを確認する方法はありますか??

4

2 に答える 2

4

JPanel をチェックする代わりに、現在のボード位置を別のデータ構造に保存することをお勧めします。通常、部品にアクセスするためのアクセサ関数を使用してボードを格納するクラスを定義します。たとえば、次のようになります。

public class Board {
    private Piece[][] squares;
    ....
    code to set up board etc.
    ....
    public Piece getPiece(int x, int y) {
        return squares[x][y]; 
    }
}

このアプローチには、いくつかの利点があります。

  • ボードの位置の表現を GUI 表示から分離します。これは重要です。通常、画面表示に縛られずにボードの位置を操作したい (例: 評価、可能な動きの検索など)。
  • ボードの内部表現は好きなように構成でき、その一方で、ボードを使用する他のコードにカプセル化されたビューを表示できます。
  • パフォーマンスが向上します。ボードの単純なインメモリ表現は、GUI コンポーネントのツリーをクエリ/変更するよりもはるかに軽量で高速にアクセスできます。
于 2012-12-29T10:01:07.617 に答える
0

メッセージを送ってください。コンピューターに問題があり、現在コメントを投稿できないようですが、しばらく前にチェッカー ゲームを作成しました。ソース コードをお送りします。完全ではありませんが、ボードとピースを描画します。また、マウス クリックとプレイ可能な正方形もチェックします。参考になるかも。あなたの質問に対する簡単な答えは、私は を使用せず、代わりにまたはJPanelを拡張する Space クラスを作成します。RectangleRectangle2DJPanel

于 2012-12-29T11:37:33.777 に答える