与 rectangle.intersects [Java] 发生碰撞

collision with rectangle.intersects [Java]

所以,我正在尝试使用矩形在我的游戏中对墙壁进行碰撞,我决定尝试使用 ArrayList 来存储每面墙的矩形,并将整个区域设为一面墙,我想做的就是移除三堵墙,所以我正在做 shapeList.remove(0) 尝试移除 0,0 处的第一堵墙,但它不起作用,我不知道我是否我做错了,或者如果有更好的方法,但我可以使用一些帮助来解决这个问题,这是代码。

    public void walls(Graphics g) {
    for (int i = 0; i < 63; i++) {
        for (int wallsX = 0; wallsX < 750; wallsX += 95) {
            for (int wallsY = 0; wallsY < 750; wallsY += 95) {
                shapeList.add(new Rectangle(wallsX, wallsY, 95, 95));
                g.setColor(Color.blue);
                g.drawRect(wallsX, wallsY, 95, 95);
            }
        }
    }
    shapeList.remove(0); //I want to remove wall at 0,0... but not working
    g.setColor(Color.black);
    g.fillRect(0, 0, 95, 95);
    g.fillRect(95, 0, 95, 95);
    g.fillRect(0, 95, 95, 95);

    for (int i = 0; i < shapeList.size(); i++) {
        if (intersectsBox(getRectangle(), shapeList.get(i))) {
            isInsideWalls = true;

        }else{
            isInsideWalls = false;
        }
    }
}

编辑:当我运行这段代码时,出现这个错误:

`Exception in thread "AWT-EventQueue-0" Exception in thread "Timer-0" java.lang.NullPointerException
    at java.awt.Rectangle.intersects(Unknown Source)
    at bombermangame.Game.intersectsBox(Game.java:122)
    at bombermangame.Game.walls(Game.java:147)
    at bombermangame.Game.paintComponent(Game.java:161)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)

下面的循环需要删除,因为它创建了 63 个墙网格副本。这意味着您指定的每个坐标都将包含 63 个矩形。

 for (int i = 0; i < 63; i++) {

删除 for 循环将至少解决一个问题的原因是,当您删除第一个矩形时,在同一坐标处还剩下 62 个矩形。

创建墙列表所需的全部内容如下:

for (int wallsX = 0; wallsX < 750; wallsX += 95) {
      for (int wallsY = 0; wallsY < 750; wallsY += 95) {
           shapeList.add(new Rectangle(wallsX, wallsY, 95, 95));
           g.setColor(Color.blue);
           g.drawRect(wallsX, wallsY, 95, 95);
      }
}

现在一旦你申请了shapeList.remove(0);

坐标 (0,0) 处应该没有墙了。

您的代码中可能还有其他我不知道的错误。我只查看了您在问题中提供的代码。