diff --git a/travail_individuel/Meyer/jeu_de_la_vie/main b/travail_individuel/Meyer/jeu_de_la_vie/main
index a3a08e9dc2b069472ae0dc1d00ba9e63f1aba272..9d788b83eea634343d2d54fa14f7313603cc8abe 100755
Binary files a/travail_individuel/Meyer/jeu_de_la_vie/main and b/travail_individuel/Meyer/jeu_de_la_vie/main differ
diff --git a/travail_individuel/Meyer/jeu_de_la_vie/main.c b/travail_individuel/Meyer/jeu_de_la_vie/main.c
index f6402fd4941014cd57246dde0ac8b976a58ff7b7..570395e90df03fd181e7e8cc8e91cccf7cfa221e 100644
--- a/travail_individuel/Meyer/jeu_de_la_vie/main.c
+++ b/travail_individuel/Meyer/jeu_de_la_vie/main.c
@@ -2,7 +2,6 @@
 #include <stdlib.h>
 #include <SDL2/SDL.h>
 
-#define TAILLE_MONDE_DELIMITE 20
 #define TAILLE_TABLEAU_REGLES 9
 
 int survie[TAILLE_TABLEAU_REGLES] = {0, 0, 1, 1, 0, 0, 0, 0, 0};
@@ -17,6 +16,8 @@ SDL_Event event;
 int running = 1;
 int tailleAffichage = 30;
 
+int taille_monde_delimitee = 20;
+
 void initSDL2(){
 
     SDL_Init(SDL_INIT_VIDEO);              
@@ -54,23 +55,23 @@ void destroySDL2(){
     SDL_Quit();
 }
 
-void initMonde(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+void initMonde(int monde[taille_monde_delimitee][taille_monde_delimitee]){
     int i = 0;
     int j = 0;
     
-    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
-        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+    for(i=0; i<taille_monde_delimitee; i++){
+        for(j=0; j<taille_monde_delimitee; j++){
             monde[i][j] = 0;
         }
     } 
 }
 
-void afficheMonde(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+void afficheMonde(int monde[taille_monde_delimitee][taille_monde_delimitee]){
     int i = 0;
     int j = 0;
 
-    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
-        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+    for(i=0; i<taille_monde_delimitee; i++){
+        for(j=0; j<taille_monde_delimitee; j++){
             switch(monde[i][j]){
                 case 0:
                     SDL_SetRenderDrawColor(renderer, 255, 255, 255, 0);
@@ -91,7 +92,7 @@ void afficheMonde(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
     }
 }
 
-void afficherEcran(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+void afficherEcran(int monde[taille_monde_delimitee][taille_monde_delimitee]){
     
     SDL_SetRenderDrawColor(renderer, 0, 16, 158, 0);
     SDL_RenderClear(renderer);
@@ -101,7 +102,7 @@ void afficherEcran(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
     SDL_RenderPresent(renderer);
 }
 
-void changeCellule(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE], int clic_x, int clic_y){
+void changeCellule(int monde[taille_monde_delimitee][taille_monde_delimitee], int clic_x, int clic_y){
     int ligne = clic_y/tailleAffichage;
     int colonne = clic_x/tailleAffichage;
     if(0 == monde[colonne][ligne]){
@@ -111,23 +112,23 @@ void changeCellule(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE], int
     }
 }
 
-int nombreVoisinsVivants(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE], int cel_x, int cel_y){
+int nombreVoisinsVivants(int monde[taille_monde_delimitee][taille_monde_delimitee], int cel_x, int cel_y){
     int nbrVoisinsVivants = 0;
     if(cel_x==0 && cel_y==0){
         nbrVoisinsVivants = monde[cel_x+1][cel_y] + monde[cel_x][cel_y+1] + monde[cel_x+1][cel_y+1];
-    } else if(cel_x==0 && cel_y==TAILLE_MONDE_DELIMITE-1){
+    } else if(cel_x==0 && cel_y==taille_monde_delimitee-1){
         nbrVoisinsVivants = monde[cel_x+1][cel_y] + monde[cel_x][cel_y-1] + monde[cel_x+1][cel_y-1];
-    }else if(cel_x==TAILLE_MONDE_DELIMITE-1 && cel_y==0 ){
+    }else if(cel_x==taille_monde_delimitee-1 && cel_y==0 ){
         nbrVoisinsVivants = monde[cel_x-1][cel_y] + monde[cel_x][cel_y+1] + monde[cel_x-1][cel_y+1];
-    }else if(cel_x==TAILLE_MONDE_DELIMITE-1 && cel_y==TAILLE_MONDE_DELIMITE-1){
+    }else if(cel_x==taille_monde_delimitee-1 && cel_y==taille_monde_delimitee-1){
         nbrVoisinsVivants = monde[cel_x-1][cel_y] + monde[cel_x][cel_y-1] + monde[cel_x-1][cel_y-1];
     }else if(cel_x==0){
         nbrVoisinsVivants = monde[cel_x][cel_y-1] + monde[cel_x+1][cel_y-1] + monde[cel_x+1][cel_y] + monde[cel_x+1][cel_y+1] + monde[cel_x][cel_y+1];
-    }else if(cel_x==TAILLE_MONDE_DELIMITE-1){
+    }else if(cel_x==taille_monde_delimitee-1){
         nbrVoisinsVivants = monde[cel_x][cel_y-1] + monde[cel_x-1][cel_y-1] + monde[cel_x-1][cel_y] + monde[cel_x-1][cel_y+1] + monde[cel_x][cel_y+1];
     }else if(cel_y==0){
         nbrVoisinsVivants = monde[cel_x-1][cel_y] + monde[cel_x-1][cel_y+1] + monde[cel_x][cel_y+1] + monde[cel_x+1][cel_y+1] + monde[cel_x+1][cel_y];
-    }else if(cel_y==TAILLE_MONDE_DELIMITE-1){
+    }else if(cel_y==taille_monde_delimitee-1){
         nbrVoisinsVivants = monde[cel_x-1][cel_y] + monde[cel_x-1][cel_y-1] + monde[cel_x][cel_y-1] + monde[cel_x+1][cel_y-1] + monde[cel_x+1][cel_y];
     }else{
         nbrVoisinsVivants = monde[cel_x-1][cel_y-1] + monde[cel_x][cel_y-1] + monde[cel_x+1][cel_y-1] + monde[cel_x+1][cel_y] +
@@ -136,15 +137,21 @@ int nombreVoisinsVivants(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]
     return nbrVoisinsVivants;
 }
 
-void reglesEvolutions(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+void reglesEvolutions(int monde[taille_monde_delimitee][taille_monde_delimitee]){
     int i = 0;
     int j = 0;
     
-    int mondeSuivant[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE] = {0};
+    int mondeSuivant[taille_monde_delimitee][taille_monde_delimitee];
+
+    for(i=0; i<taille_monde_delimitee; i++){
+        for(j=0; j<taille_monde_delimitee; j++){
+            mondeSuivant[i][j] = 0;
+        }
+    }
 
     int nbrVoisinsVivants = 0;
-    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
-        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+    for(i=0; i<taille_monde_delimitee; i++){
+        for(j=0; j<taille_monde_delimitee; j++){
             nbrVoisinsVivants = nombreVoisinsVivants(monde, i, j);
             if(monde[i][j]==1 && survie[nbrVoisinsVivants]==0){
                 mondeSuivant[i][j] = 0;
@@ -156,18 +163,48 @@ void reglesEvolutions(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
         }
     }
 
-    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
-        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+    for(i=0; i<taille_monde_delimitee; i++){
+        for(j=0; j<taille_monde_delimitee; j++){
             monde[i][j] = mondeSuivant[i][j];
         }
     }
+}
 
-   
+void chargeNiveauFichier(char *nom_fichier, int monde[taille_monde_delimitee][taille_monde_delimitee]){
+    FILE *fichier = NULL;
+    int valeur;
+    int ligne = -1;
+    int colonne = 0;
+    fichier = fopen(nom_fichier, "r");
+    if(fichier != NULL){
+        while(fscanf(fichier, "%d", &valeur) != EOF){
+            if(ligne == -1){
+                taille_monde_delimitee = valeur;
+                ligne = 0;
+            }else{
+                monde[colonne][ligne] = valeur;
+                colonne = colonne + 1;
+                if(colonne==taille_monde_delimitee){
+                    ligne = ligne + 1;
+                    colonne = 0;
+                    if(ligne==taille_monde_delimitee){
+                        break;
+                    }
+                }
+            }
+            printf("%d (%d, %d)\n", valeur, ligne, colonne);
+        }
+    }
+    fclose(fichier);
 }
 
-int main() {
+int main(int argc, char** argv) {
+
+    if(argc == 2){
+        taille_monde_delimitee = atoi(argv[1]);
+    }
 
-    int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE];
+    int monde[taille_monde_delimitee][taille_monde_delimitee];
 
     initSDL2();
 
@@ -199,8 +236,9 @@ int main() {
                             printf("goo calcul!\n");
                             reglesEvolutions(monde);
                             break;
-                        case SDLK_s:
-                            printf("stop calcul...\n");
+                        case SDLK_c:
+                            printf("charge niveau.txt...\n");
+                            chargeNiveauFichier("niveau.txt", monde);
                             break;
                         default:
                             printf("une touche est tapee\n");
diff --git a/travail_individuel/Meyer/jeu_de_la_vie/niveau.txt b/travail_individuel/Meyer/jeu_de_la_vie/niveau.txt
new file mode 100644
index 0000000000000000000000000000000000000000..2abba445ada331c69fba8269989148b4e96fe1be
--- /dev/null
+++ b/travail_individuel/Meyer/jeu_de_la_vie/niveau.txt
@@ -0,0 +1,21 @@
+20
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
+0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0
+0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
\ No newline at end of file