检查2个数组的重叠

时间:2015-02-01 06:54:45

标签: java arrays junit 2d overlap

我正在编写一种方法来测试2个数组的碰撞(就像俄罗斯方块一样)。 grid数组和movingShape数组。此方法的参数是x和y坐标。该方法将采用movingShape和坐标并在两个数组上循环,以查看较小的movingShape是否位于grid中任何已填充单元格的顶部。如果2个数组不重叠则返回true,否则返回false。

当我进行测试时,它没有通过。这是我到目前为止所得到的:

public boolean test_position(int x, int y) {
    for (int row = 0; row < movingShape.length; row++) {
        for (int col = 0; col < movingShape[row].length; col++) {
            if (movingShape[row][col] != 0) {
                grid[row + x][col + y] = movingShape[row][col];
                return true;
            } else {
                return false;
            }
        }
    }
    return false;
}

一些测试:

    org.junit.Assert.assertTrue( "test_position( 0,5 ) start" , tet.test_position( 0,5 ) );
    org.junit.Assert.assertTrue( "test_position( 0,2 ) top left" , tet.test_position( 0,2 ) );

1 个答案:

答案 0 :(得分:0)

因为循环if/else中的return条件都有,所以嵌套循环只能迭代一次,因此只能测试单元格。此外,正如5gon12eder所述,您似乎错过了在分配网格之前未填充网格的检查。最后,我不认为名为test_position的方法应该更新网格。