2015-08-24 56 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; 
     } 
} 
相关问题