我正在编写一种方法来测试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 ) );
答案 0 :(得分:0)
因为循环if/else
中的return
条件都有,所以嵌套循环只能迭代一次,因此只能测试单元格。此外,正如5gon12eder
所述,您似乎错过了在分配网格之前未填充网格的检查。最后,我不认为名为test_position
的方法应该更新网格。