我正在创建一个视频游戏,玩家可以进入和退出房间。他们也可以进入房间或子房间内的房间。在完成所有碰撞后,我想出了五个Rectangle变量/数组。
static Rectangle exitDoor[] = new Rectangle[1];
static Rectangle subExitDoor[] = new Rectangle[1];
static Rectangle roomDoor[] = new Rectangle[1];
static Rectangle roomLadder[] = new Rectangle[1];
static Rectangle roomInnerLadder[] = new Rectangle[1];
每个房间可以有多个房间。我想将所有这些数组放在一个创建它们的两个版本的数组中。我的意思是,如果最后的两个像素数组被命名为“room”而不是room [0] [0]和room [1] [0](第二个零是exitDoor数组)将是两个不同的值。
我尝试过以下操作,但所做的只是做与第一组代码相同的操作。
Rectangle[][] roomCat = new Rectangle[][] { exitDoor, subExitDoor, roomDoor, roomLadder, roomInnerLadder };
我不是在找人告诉我如何制作二维阵列,我可以做好准备。我需要有人告诉我如何将它们带到下一步。
谢谢, 橡木
答案 0 :(得分:1)
嗯,我不明白你想用二维数组做什么。实际上二维数组并没有什么特别之处,如果你知道我的意思,它们只是数组的数组。
但是,如果我们首先回顾一下你想做什么。它实际上并不是非常复杂的任务。
实际上,你所做的是一个非常有趣的概念,在数学和艺术等许多领域,被称为自我引用。你可以在埃舍尔的画作和巴赫的画中看到自我参照。看看下面的课程。
class Room {
Room outerRoom;
Room innerRoom;
Room(Room outerRoom, Room innerRoom) {
this.outerRoom = outerRoom;
this.innerRoom = innerRoom;
}
// goes to outerRoom
Room exit() {
return outerRoom;
}
// goes to innerRoom
Room enter() {
return innerRoom;
}
}
它是游戏中房间的实现。如你所说,房间内可能还有另一个房间,因此房间外可能还有另一个房间。因此,如果我们想退出房间,我们会去outerRoom。这个实现方便的是outerRoom也是一个房间。因此它也包含内部和外部房间。
你可能认为这个类是一个俄罗斯套娃,但我们实际实现的是一个基本的链表。您可以在互联网上查找,然后您可以在制作游戏时使用它,但似乎您正在寻找更多内容。
你想在一个房间里有很多房间。你正在寻找的是一棵树,我的朋友。看下面的课程:
class Room {
Room outerRoom;
Room[] innerRooms;
// creates a room with n inner rooms
Room (Room outerRoom, int n) {
this.outerRoom = outerRoom;
this.innerRooms = new Room[0];
}
// sets nth room to innerRoom
void addRoom(int n, Room innerRoom) {
innerRooms[n] = innerRoom;
}
// goes to nth room
Room getRoom(int n) {
return innerRooms[n];
}
}
它是游戏中房间的另一个实现。这次我们没有内部空间,而是有一系列内部空间。因此,您可以在房间内拥有任意数量的房间,但是您只能在外面有一个房间,就像一棵树的节点。
因此,我建议您在互联网上查找链表和树,以了解这种自引用结构的概念。
另请注意,如果外面没有任何房间,则可以将其设为空,如果您不想拥有任何内部房间,则可以将内部房间的数量设置为0。
我希望它有所帮助:)。
答案 1 :(得分:-3)
在创建房间时,您没有使用Arrays只有多个Rectangle类及其值 而是使用带循环的2d数组或在多维数组中插入矩形。