用小数组替换大数组或映射的一部分

时间:2013-05-15 14:52:44

标签: java

我将22X12地图定义为颜色网格。我有七个潜在的对象将出现在这个网格上。每个对象都有一小部分颜色,范围从4X1到2X2。是否有任何类型的数学或关键字我可以继续找出如何将较小的数组放在较大的数组中,覆盖较大的数组值?

举一个我要完成的小例子,我将使用一个更大的整数映射和一个更小的整数数组以及我想要的输出。

地图:

1 1 1 1 1 1
1 0 0 0 0 1
1 0 0 0 0 1
1 0 0 0 0 1
1 1 1 1 1 1

较小的数组:

1 0
0 1

将数组放在以下位置之后映射:

1 1 1 1 1 1
1 0 1 0 0 1
1 0 0 1 0 1
1 0 0 0 0 1
1 1 1 1 1 1

我只需要一个开始的地方。是否存在线性代数概念,我可以查找或者是否有任何类型的技术来执行此类操作?我很难确定如何去做这件事。谢谢。

2 个答案:

答案 0 :(得分:1)

for (int y = 0; y < small.length; ++y)
  for (int x = 0; x < small[y].length; ++x)
    large[y + replace_y][x + replace_x] = small[y][x];

答案 1 :(得分:1)

public static void main (String[] args) {
    int[][] bigMap = new int[][] {
            { 1, 1, 1, 1, 1, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 0, 0, 0, 0, 1 },
            { 1, 1, 1, 1, 1, 1 }
    };

    int[][] smallMap = new int[][] {
            { 1, 0 },
            { 0, 1 }
    };

    overwriteArray(bigMap, smallMap, 1, 1);

    // print out the 2d array
    for (int i = 0; i < bigMap.length; i++) {
        for (int j = 0; j < bigMap[0].length; j++) {
            System.out.print(" " + bigMap[i][j]);
        }
        System.out.println();
    }

}

static void overwriteArray(int[][] big, int[][] small, int x, int y) {
    for (int i = 0; i < small.length; i++) {
        for (int j = 0; j < small[i].length; j++) {
            big[x+i][y+j] = small[i][j];
        }
    }
}