2015-09-06 85 views
0

我正在製作視頻遊戲,玩家可以進入和退出房間。他們也可能進入房間或​​分房間的房間。經過所有碰撞之後,我想出了五個Rectangle變量/數組。Java - Fancy Two Dimesional Arrays

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]; 

每個房間可以有多個內部。我想將所有這些數組放在一個數組中,創建它們的兩個版本。我的意思是,如果最後兩個二維數組被命名爲「房間」而不是房間[0] [0]和房間[1] [0](第二個零是exitDoor數組)將是兩個不同的值。

我已經嘗試做下面的事情,但它所做的只是做與第一組代碼相同的事情。

Rectangle[][] roomCat = new Rectangle[][] { exitDoor, subExitDoor, roomDoor, roomLadder, roomInnerLadder }; 

我不找人來告訴我如何使二維數組,我可以準備人做到這一點。我需要有人告訴我如何讓他們進入下一步。

感謝, 橡樹

+0

它聽起來並不像你想要array *一樣,而是一個'Room'類,它包含這些'Rectangle's作爲'Door's代替。 – Makoto

+0

比我在班上的數組做什麼? – Oak

+0

這是一個完全不同的設計。我不認爲陣列會讓你受益;相反,你會想創建全新的抽象來表示這一點。索引到一個二維數組可以完成幾乎相同的事情。 – Makoto

回答

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

希望它有助於 :)。

-3

您沒有使用陣列創建房間它只是多個Rectangle類及其價值 而是使用二維數組與循環或多維數組插入的矩形。