2015-08-24 5 views
2

Я делаю игру с roguelike. Я хочу представить карту как массив структур, например, имея 256 структур в массиве. Карта представляет собой сетку из 16 * 16 плиток, и каждая плитка имеет атрибуты, например, есть ли элемент поверх нее.Как создать массив структур в C?

Так сказать, что я хочу, массив 256 из структуры tiles:

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; 
     } 
} 
Смежные вопросы