void get_cases_states() {
// déclaration des variables
int nb_maps = 0, file_size = 0, nbr_col = 0, nbr_line = 0, nbr_char = 100;
int boucle, boucle2, boucle3;
char c_nb_maps[2] = "", c_read_cfg[10] = "",
c_case_state[2]="", *str;
char file_name[MAX_PATH] = "";
string test = "";
FILE *fcfg, *fsta;
// ouverture du fichier Config.cfg, qui contient le nombre de maps disponibles
fcfg = fopen("Maps/Config.cfg", "rt");
// recherche de la taille du fichier
file_size = fsize(fcfg);
// recherche du nombre de maps écrites dans le fichier
fread(c_nb_maps, file_size,1, fcfg);
nb_maps = atoi(c_nb_maps);
// free(c_nb_maps); // On ne desalloue pas un tableau statique !!
// fermeture du fichier
fclose(fcfg);
// redimensionnement du tableau (map)
case_state = (int ***)malloc(nb_maps * sizeof(int **));
// boucle sur les fichiers .cfg (contient le nombre de colonnes / lignes sous la forme XXX/YYY)
for (boucle
= 0; boucle
< nb_maps; boucle++) { // On commence le tableau à partir de 0
test += "test";
printf("Loading maps (%d / %d) %s\n", boucle, nb_maps, test
.c_str()); // utilisation de la méthode c_str
// lecture du nombre de cases (XXX/XXX)
sprintf(file_name, "Maps/%d.cfg", boucle
+1); // boucle + 1
fcfg = fopen(file_name, "rt");
if (fcfg==NULL) printf("Erreur ouverture fichier\n");
file_size = fsize(fcfg);
printf("file_size : %d\n",file_size);
fread(c_read_cfg, 1, file_size, fcfg);
fclose(fcfg);
nbr_col = atoi(strtok(c_read_cfg, "/"));
nbr_line = atoi(strtok(NULL, "/"));
// redimensionnement du tableau (colonnes)
case_state[boucle] = (int **)malloc(nbr_col * sizeof(int *));
for (boucle2
= 0; boucle2
< nbr_col; boucle2++) { // on commence à 0
// redimensionnement du tableau (lignes)
case_state[boucle][boucle2] = (int *)malloc(nbr_line * sizeof(int));
} // for
// lecture des etats des cases de cette map (fichier .sta)
sprintf(file_name, "Maps/%d.sta", boucle
+1); // boucle + 1
fsta = fopen(file_name, "rt");
// boucle sur les colonnes
for (boucle2
= 0; boucle2
< nbr_col; boucle2++) {
// boucle sur les lignes
for (boucle3
= 0; boucle3
< nbr_line; boucle3++) {
fread(c_case_state, 1, 1, fsta);
c_case_state[1]=0; // un tableau "null-terminated" est préférable
case_state[boucle][boucle2][boucle3] = atoi(c_case_state);
} // for
} // for
fclose(fsta);
// Ne pas oublier de desallouer la mémoire (pour les tests)
for (boucle2=0; boucle2<nbr_col; boucle2++) {free(case_state[boucle][boucle2]);case_state[boucle][boucle2]=NULL;}
free(case_state[boucle]); case_state[boucle]=NULL;
// Fin desallocation mémoire
} // for
free(case_state);case_state=NULL;
printf("Loading maps OK\n");
} // get_cases_states
Partager