2d阵列正方形初始化和选择

时间:2014-01-30 18:37:30

标签: java arrays multidimensional-array javafx 2d

为了进行代码优化,我想创建一个包含40个相等正方形(10x10px)的二维数组。每个方块代表显示窗口的1 \ 40(400x400px)。

我使用标准的双循环方法填充2d数组。

    int col = 40;
    int row = 40;
    int boxPosition = 0; //Position of the box (coordinates)
    Integer[][] boxes = new Integer[40][40];

    for (int i = 0; i < col; i++) {
        for (int j = 0; j < row; j++) {
            boxes[i][j] = boxPosition;
            boxPosition += 10; //Creates a 10px box.
        }
        boxPosition = 0; //Resets box size for next column
    }

此计划中有几个圈子。我们有一个船(圆圈)向敌人(圆圈)发射导弹(圆圈)。

我想只在其中一个方格中有子弹+敌人时才进行碰撞检测。这将极大地优化代码。

问题是......如何从二维数组中创建这些方块?如何选择每个方块?如何测试导弹和敌人是否在同一个方格内?

代码示例非常有用。

感谢。

1 个答案:

答案 0 :(得分:2)

我不确定你在2D数组中做了什么,或者为什么它包含整数或为什么它在每列中包含增加的大小,但是基于网格的碰撞的一般方法是使用2D数组GameObjects。您的案例中的GameObject可以是Ship,Missile或Enemy。

当你的一个GameObjects想要移动时,你只需检查GameObjects的2D数组,看看你想要移动到的方块中已有的数据。如果它是空的,你可以移动。如果它不是空的,你就会发生碰撞。