gpt4 book ai didi

java - 如何比较多个目标的变量值

转载 作者:太空宇宙 更新时间:2023-11-04 12:58:48 24 4
gpt4 key购买 nike

我刚刚开始使用 java,所以如果我混淆了事情,请耐心等待。

无论如何,我想创建一个包含 4 个不同房间的关卡。我这样做是为了让每个房间都是一个在 main 方法中创建的单独对象。

然后我想做的是将每个房间放置在一定大小的水平内,如果一个房间与另一个房间重叠,它将返回 false。每个房间基本上都是一个 100x100 像素的 block 。

我已经这样做了,通过将 (x,y) 线分配给房间类中定义的 2 个变量,每个房间对象都可以在放置时存储其在关卡上的位置。

但是我在放置第二个房间时遇到了麻烦。如何检查我要放置的第二个房间是否与其他房间重叠?我的想法是,检查所有房间对象中的所有 (x,y) 变量值,如果其中任何一个重叠,它将返回 false。但是我不知道如何引用所有这些变量,如何检查每个房间对象中的变量?

非常感谢您的帮助!

最佳答案

将分配给某个位置的房间放入 ArrayList 中,以便您可以循环遍历它们并比较参数。我想房间不仅有 xy 坐标,还有 lengthwidth

// using a list of rooms that are placed on level
List<Room> assignedRooms = new ArrayList<Room>();
// create a new room (x, y, width, height)
Room newRoom = new Room(0, 0, 100, 100);
assignedRooms.add(newRoom);
// create further rooms

为了确定一个房间是否与另一个房间重叠,您最好循环遍历剩余的房间,即您已经放置在整个区域内的房间,并检查新添加的房间的 xy 坐标是否与任何其他房间冲突。

for (int i = 0; i < assignedRooms.size(); i++) {
Room assignedRoom = assignedRooms.get(i);
if (assignedRoom.x < roomToAdd.x && assignedRoom.x + assignedRoom.width > roomToAdd.x)
// overlap
return false;
else if (assignedRoom.y < roomToAdd.y && assignedRoom.y + assignedRoom.height > roomToAdd.y)
// overlap
return false;
}
return true;

关于java - 如何比较多个目标的变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35125821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com