0

javaの配列のインデックスに同じタイプの複数のアイテムを追加できますか? Java でバックギャモン プログラムを作成しようとしていますが、ボードの作成方法がわかりません。「チェッカー」、5 つのチェッカーを 1 つの位置に保管する必要があります。1 つのインデックスに 5 つのアイテムを格納できますか? 例えば。array[1] = {a,b,c,d,e}. 配列でそれができない場合、それを行う他の方法はありますか。

これは私が持っているものです:(私は今のところ色を持っていません.白の変数homeWhiteと黒のhomeBlackのみ)

  //other methods omitted

 /**
 *  a method to set the default board design and layout of the game.
 */
private void newBoard()
{

    homeWhite = 0;
    homeBlack = 0;
    barWhite = 0;
    barBlack = 0;
    private int [] stoneCounts = new int[25];

    stoneCounts[0]  = 5*homeWhite;
    stoneCounts[11] = 2*homeWhite;
    stoneCounts[16] = 3*homeWhite;
    stoneCounts[18] = 5*homeWhite;
    stoneCounts[23] = 5*homeBlack;
    stoneCounts[12] = 2*homeBlack;
    stoneCounts[7]  = 5*homeBlack;
    stoneCounts[5]  = 3*homeBlack;
    stoneCounts[24] = barWhite = barBlack;

    System.out.println(stoneCounts[0]+"===="+ stoneCounts[1]+"===="+stoneCounts[2]+"===="+stoneCounts[3]+"===="+ stoneCounts[4]+"===="+stoneCounts[5]+"===="+ 
    stoneCounts[6]+"===="+stoneCounts[7]+"===="+stoneCounts[8]+"===="+stoneCounts[9]+"===="+ stoneCounts[10]+"===="+stoneCounts[11]);
    System.out.println("");
    System.out.println("");
    System.out.println("Bar: "  + stoneCounts[24]);
    System.out.println("");
    System.out.println("");
    System.out.println(stoneCounts[12]+"===="+ stoneCounts[13]+"===="+stoneCounts[14]+"===="+ stoneCounts[15]+"===="+stoneCounts[16]+"===="+ stoneCounts[17]+"===="
    +stoneCounts[18]+"===="+stoneCounts[19]+"===="+stoneCounts[20]+"===="+ stoneCounts[21]+"===="+stoneCounts[22]+"===="+stoneCounts[23]);
}
4

3 に答える 3

0

私の提案は、awolfe91の答えを拡張して、よりオブジェクト指向のアプローチをとることです。Position各位置にいくつのチェッカーがあり、これらの色に関する情報を保存するクラスを持つことをお勧めします。次に、の配列のみが必要ですPosition

Positionクラスでは、たとえば、その色のチェッカーをその位置に追加することが有効な場合にブール値を返すことができるメソッドを持つことができますcanAddChecker(color)

于 2012-11-29T21:02:59.147 に答える
0

一定数のスペースと各スペースに可変数のピースがあるため、ArrayLists の配列をお勧めします。

ArrayList<Piece>[] spaces = new ArrayList<Piece>[numSpaces];

for(int i=0; i<numSpaces; i++){
   spaces[i] = new ArrayList<Piece>();
}

これは、ピースの色や追加情報を格納できる Piece クラスがあることを前提としています。その後、ピースを追加したいときはいつでも、 space[i].add(piece); を実行できます。または何でも。それが役立つことを願っています!

于 2012-11-29T20:48:46.310 に答える
0

わかりました、あなたが考えるかもしれない2つの方法があります。まず、2 次元配列を作成できます。あなたの質問から、配列に必要な情報のタイプが正確にはわかりませんが、たとえば、int の 2 次元配列を作成したいと仮定した場合、コードを好きなように調整することができます。すべきことは、タイプ (int) を String や char などの別のものに変更することです。これは、2D 配列を作成し、それがどのように機能するかを理解するのに役立つ一般的な情報です。

int[] intArray = new int[5];

これにより、最大 5 つの異なる値を受け入れる int の配列が作成されます。intArray[0]、intArray[1]、intArray[2]、intArray[3]、intArray[4] があります。これを次のように 5 つのスペースとして視覚化することができます。

[]  []  []  []  []

ただし、これを 2 次元にすると便利です。これを想像してください:

[] [] [] [] []
[] [] [] [] []
[] [] [] [] []

これはあなたが探しているものです。これは、このように作成できる 2D 配列です。int[][] intArray = new int[3][5];

さて、物をどこに置いているかを注意深く追跡する必要があります。配列の次の位置に物を置くことができます。

intArray[0][0]
intArray[0][1]
intArray[0][2]
intArray[0][3]
intArray[0][4]

しかし、それは二次元なので、これを行うことができます:

intArray[1][0]
intArray[1][1]

等々。

もう 1 つの方法は、オブジェクトを操作してアイテムのオブジェクトを作成し、それらのオブジェクトの配列を作成することです。

これが役に立てば幸いです。

于 2012-11-29T20:50:39.530 に答える