diff --git a/src/grille.c b/src/grille.c index de51393520fcda1c3f58850295612aa494031e57..298d2e400892d2d5805369e94047f34ba0d35cf4 100644 --- a/src/grille.c +++ b/src/grille.c @@ -1,31 +1,55 @@ #include "grille.h" -void init_grille_from_file (char * filename, grille* g){ - FILE * pfile = NULL; +void init_grille_from_file(char *filename, grille *g) +{ + FILE *pfile = NULL; pfile = fopen(filename, "r"); - assert (pfile != NULL); - - int i,j,n,l,c,vivantes=0; - - fscanf(pfile, "%d", & l); - fscanf(pfile, "%d", & c); - - alloue_grille(l,c,g); - - fscanf(pfile, "%d", & vivantes); - for (n=0; n< vivantes; ++n){ - fscanf(pfile, "%d", & i); - fscanf(pfile, "%d", & j); - set_vivante(i,j,*g); + assert(pfile != NULL); + + int i, j, n, l, c, vivantes = 0; + + fscanf(pfile, "%d", &l); + fscanf(pfile, "%d", &c); + + alloue_grille(l, c, g); + + fscanf(pfile, "%d", &vivantes); + for (n = 0; n < vivantes; ++n) + { + fscanf(pfile, "%d", &i); + fscanf(pfile, "%d", &j); + set_vivante(i, j, *g); } - - fclose (pfile); + + fclose(pfile); return; } - -void copie_grille (grille gs, grille gd){ +void copie_grille(grille gs, grille gd) +{ int i, j; - for (i=0; i<gs.nbl; ++i) for (j=0; j<gs.nbc; ++j) gd.cellules[i][j] = gs.cellules[i][j]; - return; + for (i = 0; i < gs.nbl; ++i) + for (j = 0; j < gs.nbc; ++j) + gd.cellules[i][j] = gs.cellules[i][j]; + return; } + +void alloue_grille(int l, int c, grille *g) +{ + g->cellules = malloc(l * sizeof(int *)); + for (int i = 0; i < l; i++) + { + g->cellules[i] = malloc(c * sizeof(int)); + for (int j = 0; j < c; j++) + g->cellules[i][j] = 0; + } + g->nbl = l; + g->nbc = c; +}; + +void libere_grille(grille *g) +{ + for (int i = 0; i < g->nbl; i++) + free(g->cellules[i]); + free(g->cellules); +};