Имея следующий код, как я могу "получить" получить карту и вернуть значение в указанной позиции?
Я пытаюсь написать клеточный автомат на C, чтобы попытаться обернуть мою головувокруг указателей и выделения памяти.Все было хорошо, пока я не решил сделать «get» для получения данных вместо прямой карты [x + world.w * y], как я привык.Я нуждаюсь в этом, потому что в будущем я планирую иметь две карты одинакового размера и использовать одну и ту же функцию для получения данных из них (так что вместо «get (» будет «get (& map2, x, y)»).& map, x, y) ".
Я делаю это, потому что мне не рекомендуется использовать глобальные переменные, поэтому я оставлю две карты в основном и отправлю их адреса функциям для обработки.
Этоявляется языком C, поэтому решения C ++ не действительны.
Я пытался найти это в Google, но вся документация чрезвычайно техническая и запутанная, и я не уверен, как эта процедура на самом деле названа ...Кто-нибудь может мне помочь с этим? Как я могу передать массив malloc в функцию и получить или изменить данные из нее?
typedef struct Map {
int HP;
int type;
unsigned int flags;
} Map;
typedef struct World {
int w;
int h;
} World;
struct World world;
int tile (int x, int y) { return x + world.w * y; }
int get (/*unknown*/map , int x, int y){
int val = x + world.w * y;
return /*unknown ->?*/ type;
}
int main (){
Map* map;
world.w = 8;
world.h = 8;
int tiles = world.w * world.h;
map = (Map*)malloc(sizeof(Map) * tiles);
int i;
for(i = 0; i < tiles; i++){
map[i].type = rand()%2;
}
int x,y;
while(1){
put(0,0);
for(y = 0; y < world.h; y++){
printf("\n");
for(x = 0; x < world.w; x++){
printf("%i ", get(&map, x, y));
}
}
};
printf("\n");
return 0;
}