Эй, ребята, это не должно быть так сложно, но почему
fscanf(fp, "%d", Map.tile[x][y]);
Часть плитки говорит, что поле "tile" не может быть разрешено. Извините за проблемы с новичком, но я предполагаю, что это должно быть проблемой с преобразованиями char в int. Как я могу это исправить? Спасибо, waco001
void MapManager::loadMap(char *name){
int x, y;
FILE *fp;
fp = fopen(name, "rb");
const int MAX_MAP_Y = 32;
const int MAX_MAP_X = 32;
typedef struct Map
{
int tile[MAX_MAP_Y][MAX_MAP_X];
char xs;
} Map;
/* If we can't open the map then exit */
if (fp == NULL)
{
printf("Failed to open map %s\n", name);
exit(1);
}
/* Read the data from the file into the map */
for (y=0;y<MAX_MAP_Y;y++)
{
for (x=0;x<MAX_MAP_X;x++)
{
fscanf(fp, "%d", Map.tile[x][y]);
}
}
/* Close the file afterwards */
fclose(fp);
}
Map
- это тип, но вам нужен объект. Вы могли бы, например, использовать
Map map;
// ...
if (fscanf(fp, "%d", map.tile[x][y]) != 1) {
fprintf(stderr, "ERROR: failed to read map.tile[%d][%d]\n", x, y);
}