0

Javaでは、オブジェクトの2次元配列がありますが、オブジェクトのクラスメソッドでこれらのオブジェクトの配列にアクセスすることはできません。私は何をすべきか?これが私のクラスです:

class GoPiece
{
    final int boardSize = 19;
    final int empty = 0;
    final int black = 1;
    final int white = 2;
    int pieceType = empty;
    int leftRight;
    int downUp;
    int turnPlayed;
    boolean legal;
    // GoPiece's Constructor with 3 parameters.
    GoPiece(int blackOrWhite, int horizontalCoordinate, int verticalCoordinate)
    {
        pieceType = blackOrWhite;
        leftRight = horizontalCoordinate;
        downUp = verticalCoordinate;
        if ((true));
    }
    // GoPiece's Constructor with 2 parameters.
    GoPiece(int horizontalCoordinate, int verticalCoordinate)
    {
        pieceType = empty;
        leftRight = horizontalCoordinate;
        downUp = verticalCoordinate;
    }
    // GoPiece's Constructor with no parameters.
    GoPiece()
    {
        leftRight = 0;
        downUp = 0;
    }
    // Initialize an empty Go board full of GoPieces.
    GoPiece[][] InitializeBoard()
    {        
        GoPiece[][] intersection = new GoPiece[boardSize][boardSize];
        for(int horizontal = 0; horizontal < boardSize; horizontal++)
        {
            for(int vertical = 0; vertical < boardSize; vertical++)
            {
                intersection[horizontal][vertical] = new GoPiece(horizontal,vertical);
            }
        }
        return intersection;
    }

    // Make a piece a certain type: empty, black, or white.
    public void SetType(int newType)
    {
        pieceType = newType;
    }

    public int GetType()
    {
        return pieceType;
    }

    public void CheckKill()
    {
        int foobar = this.GetType();
    }
}

次に、プログラムの別の部分でInitializeBoard()を使用して、GoPiecesの2次元配列を作成できます...これは機能しますが、クラスGoPieceのメンバー関数で参照しているもの以外のすべての部分にアクセスするにはどうすればよいですか? ?配列全体をGoPieces関数の1つに渡そうとしましたが、うまくいかなかったようです。

Goは古代中国のボードゲームです。上記のCheckKill()メソッドは、配列のさまざまな部分にアクセスしようとしましたが、失敗しました。ここにいくつかの動作するダミーコードがあります。

ありがとうございました。

4

2 に答える 2

2

ボード自体を表す別のクラスを作成する必要があります(現在のピースの配置を含む)。ボードの作成、キルのテストなどのロジックは、個々のピースではなく、ボードに属します。

于 2013-03-05T21:41:44.103 に答える
1

InitializeBoard.GetType();Where InitializeBoard is a 2 Dimensional Arrayのような配列でメソッドを呼び出したいということですか?

あなたはそれをすることはできません。InitializeBoardから抜け出すGoPieceを指定する必要があります。例:InitializeBoard[0][0].GetType();すべてのメソッドを呼び出す必要がある場合は、forループを使用してそれぞれを個別に呼び出すことができます。

于 2013-03-05T21:49:07.687 に答える