Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检查字符串2d数组中点周围的每个点_Java_Oop - Fatal编程技术网

Java 检查字符串2d数组中点周围的每个点

Java 检查字符串2d数组中点周围的每个点,java,oop,Java,Oop,我目前正在用Java制作战舰游戏,我目前正在尝试设置游戏规则,以便玩家在靠近另一艘战舰时无法放置战舰。在本例中,一个网格 我有一个方法可以做到这一点,但它不是很好 这是我在Arraylist中添加点的第一种方法。我只想使用一个点=新点(I,j)和一个点列表。添加(点)

我目前正在用Java制作战舰游戏,我目前正在尝试设置游戏规则,以便玩家在靠近另一艘战舰时无法放置战舰。在本例中,一个网格

我有一个方法可以做到这一点,但它不是很好

这是我在Arraylist中添加点的第一种方法。我只想使用一个
点=新点(I,j)和一个
点列表。添加(点)
    public List<Point> addPoint(Point from, Point to) {
    for (int i = (int) from.getX(); i <= (int) to.getX(); i++) {
        for (int j = (int) from.getY(); j <= (int) to.getY(); j++) {
            Point point = new Point(i, j);
            Point point1 = new Point(i+1, j);
            Point point2 = new Point(i, j+1);
            Point point3 = new Point(i+1, j+1);
            Point point4 = new Point(i-1, j);
            Point point5 = new Point(i, j-1);
            Point point6 = new Point(i-1, j-1);
            Point point7 = new Point(i+1, j-1);
            Point point8 = new Point(i-1, j+1);
            pointList.add(point);
            pointList.add(point1);
            pointList.add(point2);
            pointList.add(point3);
            pointList.add(point4);
            pointList.add(point5);
            pointList.add(point6);
            pointList.add(point7);
            pointList.add(point8);
        }
    }
    return pointList;
}

有人知道更聪明的方法吗?

使用2d数组来表示战舰板,而不是点数组。查找“边界框”,很容易检查它们是否重叠
    public boolean isPointFreeForPlacement(Position position) {
    Point f = position.getFrom();
    Point t = position.getTo();
    for (Point p: pointList) {
        if (p.equals(f) || p.equals(t)) {
            System.out.println("Cannot place ships on top of another ship! Try again.");
            return false;
        }
    }
    return true;
}