0

我有一个定义为颜色网格的 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

我只需要一个开始的地方。是否有我可以查找的线性代数概念,或者是否有任何技术可以做这种事情?我正在努力确定如何去做。谢谢你。

4

2 回答 2

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];
于 2013-05-15T15:04:10.330 回答
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];
        }
    }
}
于 2013-05-15T15:11:19.323 回答