2D配列を別の一時配列にコピーすると、一時配列で操作を実行したときに元の配列が変更されます。
これが私の意味を示すための私のコードの一部です:
public int getPossibleMoves(int color, int turn) {
int x = 0;
int blankI;
blankI = -1;
int pBoard[][];
pBoard = new int[board.length][board.length];
System.arraycopy(board, 0, pBoard, 0, board.length);
//if its the first turn and color is black, then there are four possible moves
if(turn == 0 && color == BLACK) {
pBoard[0][0] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
pBoard[pBoard.length-1][pBoard.length-1] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
pBoard[pBoard.length/2][pBoard.length/2] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
pBoard[(pBoard.length/2)-1][(pBoard.length/2)-1] = BLANK;
current.addChild(pBoard);
current.children.get(x).setParent(current);
System.arraycopy(board, 0, pBoard, 0, board.length);
x++;
}
pBoard[0][0] = BLANK;
と同様の行で、それはボードを変更するだけでなくpBoard
、プログラムが正しく機能するためにボードを同じままにする必要があります。
私はこれに似た答えを見つけました。それは私がのSystem.arraycopy()
代わりに使うという考えを得たところですpBoard = board
。私が使用した別のプログラムで動作しますが、このSystem.arraycopy()
プログラムでは動作しません。
どんな助けでも大歓迎です。
もう1つ:
これは宿題の一部です。しかし、この小さな問題を解決しても、必要な最終製品に近づくことすらできません。これはこれまでの私のコードのほんの一部ですが、先に進むにはこれを乗り越える必要があります。