如何修复 java 中的 getBound 方法?

How to fix getBound method in java?

这是一个简单的java游戏,它包含craft.java和wall.java class.All图中的红线是墙的对象class

public void buildWall(){

        walls.add(new Wall(10,10,getWidth()-10, 10));
        walls.add(new Wall(10,10,10,getHeight()-10));
        walls.add(new Wall(10,getHeight()-10,getWidth()-10,getHeight()-10));
        walls.add(new Wall(getWidth()-10, getHeight()-10, getWidth()-10, 10));
        walls.add(new Wall(100, 10, 100, 50));
        walls.add(new Wall(150, 10, 150, 50));

    }

我写了一个 getBound2D() 方法来定义线

public Wall(int x, int y , int z , int v){

         this.x = x;
         this.y = y;
         this.z = z;
         this.v = v;
         vis = true;

         line = new Line2D.Double(x,y,z,v);
     }

    @Override
    public Rectangle2D getBounds2D() {
        return new Rectangle(x,y,z,v);
    }

但是这个方法不能正常工作。我的目的是当飞机触及线路检查碰撞的任何一个时,游戏就会结束。我该如何解决?

Line 有自己的 getBounds,因此您可以使用它:

它有 getBounds() 和 getBounds2D();

垂直线的宽度为零,水平线的高度为零。

System.out.println(new Line2D.Double(0, 0, 0, 100).getBounds()+" "+new Line2D.Double(0, 0, 100, 0).getBounds2D());

要让你的 vertical/horizontal 行有 width/height 1 你可以这样定义它:

getBounds2D() {
  return new Rectangle(x, y, z-x+1, v-y+1);
}