0

私が取り組んでいるプロジェクトでは、2D 配列で形成された 2 つのグリッドがあり、そのうちの 1 つはユーザーが画像を描画できるようにし、もう 1 つは送信された最後の画像を表示します。ただし、私のコードは深いコピーではなく浅いコピーを作成しているため、Processing でディープ コピーする方法を見つける必要があります。これが私の浅いコピーコードのスニペットです:

   for (int i = 0; i < cols; i++) {
     for (int j = 0; j < rows; j++) {
     mainGrid[i][j] = userGrid[i][j];
    }
  }

Processingでこれを行う最も簡単な方法は何ですか? Java Deep-Copy ライブラリを使用するなど、userGrid のすべてのコンテンツを mainGrid にディープ コピーする最も簡単な方法を広範囲に探してきましたが、このライブラリのツールの使用方法がよくわかりません。 2D 配列を別の配列にコピーします。

4

1 に答える 1

0

最も簡単なオプションは、柔軟でそのために設計されたarrayCopy()を使用することです。簡単なデモを次に示します。

int nx = 5;
int ny = 5;
int[][] mainGrid;
int[][] userGrid;

void setup(){
  //init
  mainGrid = new int[nx][ny];
  userGrid = new int[nx][ny];
  //populate with dummy data to test
  for(int y = 0 ; y < ny; y++){
    for(int x = 0; x < nx; x++){
      userGrid[x][y] = round(random(nx)+random(ny));
    }
  } 

  println("userGrid:\n"+print2DArray(userGrid,nx,ny,true));

  arrayCopy(userGrid,mainGrid);//copy userGrid into mainGrid

  println("mainGrid:\n"+print2DArray(mainGrid,nx,ny,true));
}
//utility to pretty print 2D arrays 
String print2DArray(int[][] arr,int sx,int sy,boolean printIds){
  String out = "";
  for(int i = 0 ; i < sx*sy; i++){
    int x = i/sx;
    int y = i%sx;
    boolean isLastOnLine = i%sx == sx-1;
    out += (printIds ? "["+x+"]"+"["+y+"]:" : "")+arr[x][y]+(isLastOnLine ? "":",");
    if(isLastOnLine) out += "\n"; 
  }
  return out;
}
于 2013-04-18T13:43:00.580 に答える