Java - 花式二维数组

时间:2015-09-06 20:18:03

标签: java arrays

我正在创建一个视频游戏,玩家可以进入和退出房间。他们也可以进入房间或​​子房间内的房间。在完成所有碰撞后,我想出了五个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 };

我不是在找人告诉我如何制作二维阵列,我可以做好准备。我需要有人告诉我如何将它们带到下一步。

谢谢, 橡木

2 个答案:

答案 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数组或在多维数组中插入矩形。