2011-09-06 54 views
1

我需要將元素存儲在多維數組中。具體來說,我需要將「tiles」保存到網格中(例如,在x:2 y:5處的Grass,在x:3 y:5處的污垢等)。使用多維感覺非常黑,並且非常糟糕(不得不調整我的數組大小並且不得不創建新的數組,而且它們是不存在的)。有沒有爲此製造某種元素?我可以說obj.getPos(2,5)並獲得我的草元素並使用obj.setPos(DirtObj,3,5)將其設置爲我的Dirt元素?在VB.net中爲網格創建變量

我只是想知道在vb.net中是否有比使用多維數組更容易使用的東西,就是這樣。謝謝!

回答

1

選項1 - 類

如果你將要添加,刪除和插入對象,我會用列表的列表,因爲這會給你在給定的直接訪問對象座標(X,Y),並讓您直接設置對象而無需重新調整它們的大小。

例如,你可以有一個Tile類,並使用像這樣的列表:

Dim level As New List(Of List(Of Tile)) 

' load your level into the lists here! 

level(2)(5) ' returns the Tile object at coordinate (2, 5) from above 

level(3)(5) = New Tile(TileTypes.Dirt) ' sets a dirt tile at coordinate (3, 5) from above TileTypes would be a simple enum 



選擇2 - 枚舉

如果你正在使用的對象是他們的價值,你甚至不需要創建一個Tile類,而是你可以創建一個TileTypes枚舉值,如Dirt,Grass等等,並設置它們:

Public Enum TileTypes 
    Dirt 
    Grass 
    'etc 
End Enum 

Dim level As New List(Of List(Of TileTypes)) 

' load your level into the lists here! 

level(2)(5) ' returns the TileTypes value stored at coordinate (2, 5) from above 

level(3)(5) = TileTypes.Dirt ' sets a dirt tile at coordinate (3, 5) from above 

你應該能夠在此基礎上,並從那裏採取。

+0

非常感謝!這絕對是輝煌! – FreeSnow