diff --git a/travail_individuel/Beret/jeu_de_la_vie/Makefile b/travail_individuel/Beret/jeu_de_la_vie/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..40029b9ffe5c9b31e9190012d8c96690a307aa3d
--- /dev/null
+++ b/travail_individuel/Beret/jeu_de_la_vie/Makefile
@@ -0,0 +1,25 @@
+CC=gcc
+CFLAGS=-Wextra -Wall -lm -lSDL2
+LDFLAGS=
+EXEC=run
+
+all:$(EXEC)
+
+run: main.o render.o map.o
+	$(CC) -o $@ $^ $(LDFLAGS)
+	@echo "Lancer le programme avec ./run"
+
+map.o : src/map.c src/map.h 
+	$(CC) -o $@ -c $< $(CFLAGS)
+
+render.o : src/render.c src/render.h 
+	$(CC) -o $@ -c $< $(CFLAGS)
+
+main.o : src/main.c
+	$(CC) -o $@ -c $< $(CFLAGS)
+
+clean:
+	rm -rf *.o
+
+rmExec: clean
+	rm -rf $(EXEC)
\ No newline at end of file
diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/main.c b/travail_individuel/Beret/jeu_de_la_vie/src/main.c
new file mode 100644
index 0000000000000000000000000000000000000000..97b3199094e953e9ffeea6c1fa2f765ab9f5b2d6
--- /dev/null
+++ b/travail_individuel/Beret/jeu_de_la_vie/src/main.c
@@ -0,0 +1,108 @@
+#include <stdlib.h>
+#include <stdio.h>
+#include <SDL2/SDL.h>
+#include "map.h"
+#include "render.h"
+
+int main (int argc, char **argv) {
+    
+    if (argc=! 2){
+        printf("trop/peu d'argument \n");
+        exit(0);
+    }
+    SDL_Window 
+       *window_1 = NULL;
+    SDL_Renderer
+        *renderer = NULL;
+    SDL_bool
+        program_on= SDL_TRUE; 
+
+    int dimension_grille= atoi(argv[1]);
+    int regles_naissances [9]={0,0,0,1,0,0,0,0,0};
+    int regles_survie [9]={0,0,1,1,0,0,0,0,0};
+    int **grille;
+    int i;
+
+    init_sdl(window_1,renderer,dimension_grille);
+
+    grille = malloc(dimension_grille*sizeof(int));
+    if (grille==NULL){
+        fin_sdl(renderer,window_1);
+        printf("erreur alloc\n");
+        exit(0);
+    }
+    else{
+        for (i=0;i<dimension_grille; i++){
+            grille[i]=malloc(dimension_grille*sizeof(int));
+            if (grille[i]==NULL){
+                fin_sdl(renderer,window_1);
+                liberer_grille(grille,i-1);
+                printf("erreur alloc\n");
+                exit(0);
+            }
+        }
+    }
+
+    int ** nouvelle_grille;
+
+    nouvelle_grille = malloc(dimension_grille*sizeof(int));
+    if (nouvelle_grille==NULL){
+        fin_sdl(renderer,window_1);
+        printf("erreur alloc\n");
+        exit(0);
+    }
+    else{
+        for (i=0;i<dimension_grille; i++){
+            nouvelle_grille[i]=malloc(dimension_grille*sizeof(int));
+            if (nouvelle_grille[i]==NULL){
+                fin_sdl(renderer,window_1);
+                liberer_grille(nouvelle_grille,i-1);
+                printf("erreur alloc\n");
+                exit(1);
+            }
+        }
+    }
+
+    SDL_Event event;                                  
+
+    while (program_on) {                              /// boucle d'event 
+        if(SDL_PollEvent(&event)) {   
+                                                  
+             switch (event.type) {
+                case SDL_QUIT:
+                    program_on=SDL_FALSE;
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    printf("Appui :%d %d\n", event.button.x, event.button.y);
+                    changer_case(grille, event.button.x, event.button.y,dimension_grille);
+                    break;
+                case SDL_KEYDOWN:
+                    switch(event.key.keysym.sym){
+                        case SDLK_RIGHT:
+                            printf("goo calcul!\n");
+                            iteration_suivante(grille,nouvelle_grille,regles_naissances,regles_survie,dimension_grille);
+                            break;
+                        default:
+                            printf("une touche est tapee\n");
+                            break;
+                    }
+                    break;
+                    case SDL_WINDOWEVENT_CLOSE:  
+                        printf("appui sur la croix\n");	
+                        break;
+             
+            }
+        }
+    dessiner_grille(renderer,grille, dimension_grille);
+
+    SDL_RenderPresent(renderer);
+    SDL_Delay(20);
+    }
+
+    liberer_grille(grille, dimension_grille);
+    liberer_grille(nouvelle_grille,dimension_grille);
+
+    fin_sdl(renderer,window_1);
+
+    return 0; 
+}
\ No newline at end of file
diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/map.c b/travail_individuel/Beret/jeu_de_la_vie/src/map.c
new file mode 100644
index 0000000000000000000000000000000000000000..336c4df76248e7e194101c4908394039a6c43c6c
--- /dev/null
+++ b/travail_individuel/Beret/jeu_de_la_vie/src/map.c
@@ -0,0 +1,59 @@
+#include "map.h"
+
+int nombrevoisin(int **grille,int i , int j,int w){
+    int cpt=0; 
+
+    if (grille[(i-1)%w][(j-1)%w]==1){cpt++;}
+    if (grille[(i)%w][(j-1)%w]==1){cpt++;}
+    if (grille[(i+1)%w][(j-1)%w]==1){cpt++;}
+    if (grille[(i+1)%w][(j)%w]==1){cpt++;}
+    if (grille[(i-1)%w][(j)%w]==1){cpt++;}
+    if (grille[(i-1)%w][(j+1)%w]==1){cpt++;}
+    if (grille[(i)%w][(j+1)%w]==1){cpt++;}
+    if (grille[(i+1)%w][(j+1)%w]==1){cpt++;}
+ 
+    return (cpt); 
+}
+void liberer_grille(int ** grille,int taille){
+    int i= taille-1; 
+
+    while(i>=0){
+        free(grille[i]);
+        i--;
+    } 
+    free(grille);
+
+}
+
+void iteration_suivante(int **grille, int **nouvelle_grille ,int *regles_survie, int *regles_naissances, int taille){
+    int i;
+    int j; 
+    int nb_voisin;
+
+    for (i=0;i<taille;i++){
+        for (j=0;j<taille; j ++){
+            nb_voisin=nombrevoisin(grille,i,j,taille);
+            if ((grille [i][j]==0)&& (regles_naissances[nb_voisin])){
+                nouvelle_grille [i][j]=1;
+            }
+            else if  ((grille [i][j]==1)&& (!regles_survie[nb_voisin])){
+                nouvelle_grille [i][j]=0;
+            }
+            else{nouvelle_grille[i][j]=grille[i][j];}
+        }
+    }
+
+    grille=nouvelle_grille; 
+}
+
+
+void changer_case(int **grille,int i,int j,int taille){
+
+    if (grille[i%taille][j%taille]==0){
+        grille[i%taille][j%taille]=1;
+        }
+    else {
+        grille[i%taille][j%taille]=0;
+        }
+}
+
diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/map.h b/travail_individuel/Beret/jeu_de_la_vie/src/map.h
new file mode 100644
index 0000000000000000000000000000000000000000..9a4594609cc50d1fcbc78db9c9765a40fcffab6b
--- /dev/null
+++ b/travail_individuel/Beret/jeu_de_la_vie/src/map.h
@@ -0,0 +1,15 @@
+#ifndef projet
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <SDL2/SDL.h>
+
+#endif 
+
+/* ------------------------------- Déclaration des fonctions.---------------------------------------*/
+
+int nombrevoisin(int **grille,int i , int j,int w);
+void liberer_grille(int **grille,int taille);
+void iteration_suivante(int **grille,int **nouvelle_grille, int *regles_mort, int *regles_naissances, int taille);
+void changer_case(int **grille,int i,int j,int taille);
diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/render.c b/travail_individuel/Beret/jeu_de_la_vie/src/render.c
new file mode 100644
index 0000000000000000000000000000000000000000..28ddbace061c86397896a10b6e37938f43b46184
--- /dev/null
+++ b/travail_individuel/Beret/jeu_de_la_vie/src/render.c
@@ -0,0 +1,65 @@
+#include "render.h"
+
+void init_sdl(SDL_Window *window_1,SDL_Renderer *renderer,int dimension_grille){
+   
+    if (SDL_Init(SDL_INIT_VIDEO) != 0) {
+    SDL_Log("Error : SDL initialisation - %s\n", 
+             SDL_GetError());                // l'initialisation de la SDL a échoué 
+    exit(EXIT_FAILURE);}
+
+    window_1 = SDL_CreateWindow("Jeu de la vie",
+                            SDL_WINDOWPOS_CENTERED,
+                            SDL_WINDOWPOS_CENTERED, 10*dimension_grille,
+                            10*dimension_grille,
+                            SDL_WINDOW_OPENGL);              
+
+    if (window_1 == NULL) {
+        SDL_Log("Error : SDL window 1 creation - %s\n", 
+                SDL_GetError());                 // échec de la création de la fenêtre
+        SDL_Quit();                              // On referme la SDL       
+        exit(EXIT_FAILURE);
+    }
+
+    renderer = SDL_CreateRenderer(window_1, -1,
+                                SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
+    if (renderer == NULL) {SDL_DestroyRenderer(renderer);                                  // Attention : on suppose que les NULL sont maintenus !!
+    renderer = NULL;
+    SDL_DestroyWindow(window_1);
+    window_1 = NULL;};
+
+}
+
+void dessiner_grille(SDL_Renderer* renderer, int **grille,int taille){
+
+    int i;
+    int j; 
+
+    for (i=0;i<taille;i++){
+        for(j=0;j<taille;j++){
+
+            SDL_Rect rectangle= {10*i,10*j,10,10};
+
+            if (grille [i][j]==1){
+                SDL_SetRenderDrawColor(renderer,                                                
+                         0, 0, 0,                                  // mode Red, Green, Blue (tous dans 0..255)
+                         255); 
+                SDL_RenderFillRect(renderer, &rectangle);}
+           
+            else{
+                SDL_SetRenderDrawColor(renderer,                                                
+                         255, 255, 255,                                  // mode Red, Green, Blue (tous dans 0..255)
+                         255); 
+                SDL_RenderFillRect(renderer, &rectangle);
+            }
+        }
+    }
+}
+
+void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1){    
+    SDL_DestroyRenderer(renderer);                               
+    renderer = NULL;
+
+    SDL_DestroyWindow(window_1);
+    window_1 = NULL;
+    SDL_Quit(); 
+    }
\ No newline at end of file
diff --git a/travail_individuel/Beret/jeu_de_la_vie/src/render.h b/travail_individuel/Beret/jeu_de_la_vie/src/render.h
new file mode 100644
index 0000000000000000000000000000000000000000..aa5d4ae8f54dcb614a867b7746e648944e4474fb
--- /dev/null
+++ b/travail_individuel/Beret/jeu_de_la_vie/src/render.h
@@ -0,0 +1,11 @@
+#ifndef projet
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <SDL2/SDL.h>
+
+#endif 
+void init_sdl(SDL_Window *window_1 ,SDL_Renderer *renderer,int dimension_grille);
+void dessiner_grille(SDL_Renderer* renderer, int ** grille, int taille);
+void fin_sdl(SDL_Renderer* renderer,SDL_Window *window_1);
\ No newline at end of file