2015-08-24 72 views
2

我正在做一個roguelike遊戲。我想將地圖表示爲一個結構數組,例如在數組中有256個結構。該地圖是一個16 * 16的網格,每個網格都有屬性,例如是否有其上的項目。如何在C中創建一個結構數組?

所以說我想的結構tiles 256數組:

struct tiles { 
     char type; /* e.g. dirt, door, wall, etc... */ 
     char item; /* item on top of it, if any */ 
     char enty; /* entity on top of it, e.g. player, orc if any */ 
} 

然後,我需要訪問的那個結構是這樣的一個數組:

int main(void) 
{ 
     unsigned short int i; 
     struct tiles[256]; 

     for (i = 1; i <= 256; i++) { 
       struct tiles[i].type = stuff; 
       struct tiles[i].item = morestuff; 
       struct tiles[i].enty = evenmorestuff; 
     } 
} 

回答

5

要聲明的數組struct tiles只需將其放置在變量之前,就像使用其他類型一樣。對於10 int

int arr[10]; 

同樣的陣列,申報的256 struct tiles

struct tiles arr[256]; 

陣列要訪問的任何部件,說type,的arr元件的需要.操作者arr[i].type

5

您需要給你的數組命名。如果int變量的樣子:

int my_int 

int秒的數組類似:

int my_ints[256] 

隨後的struct tiles數組的樣子:

struct tiles my_tiles[256] 
5

數組是一個變量,就像一個整數,所以你需要給它一個名字來訪問它。

注意:陣列的最低索引爲0,最高索引爲255,因此for循環應該是:for (i = 0; i < 256; ++i)

int main(void) 
{ 
     unsigned short int i; 
     struct tiles t_array[256]; 

     for (i = 0; i < 256; ++i) { 
       t_array[i].type = stuff; 
       t_array[i].item = morestuff; 
       t_array[i].enty = evenmorestuff; 
     } 
} 
相關問題