diff --git a/travail_individuel/Meyer/jeu_de_la_vie/.vscode/c_cpp_properties.json b/travail_individuel/Meyer/jeu_de_la_vie/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000000000000000000000000000000000000..4d5b55df0634dd59212f0d153967b2f7af421e22
--- /dev/null
+++ b/travail_individuel/Meyer/jeu_de_la_vie/.vscode/c_cpp_properties.json
@@ -0,0 +1,17 @@
+{
+    "configurations": [
+        {
+            "name": "Linux",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "/usr/include/SDL2"
+            ],
+            "defines": [],
+            "compilerPath": "/usr/bin/gcc",
+            "cStandard": "gnu17",
+            "cppStandard": "gnu++14",
+            "intelliSenseMode": "linux-gcc-x64"
+        }
+    ],
+    "version": 4
+}
\ No newline at end of file
diff --git a/travail_individuel/Meyer/jeu_de_la_vie/main b/travail_individuel/Meyer/jeu_de_la_vie/main
new file mode 100755
index 0000000000000000000000000000000000000000..225f7985487aff34b31046767a595cf7adcc6f40
Binary files /dev/null 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
new file mode 100644
index 0000000000000000000000000000000000000000..ff7b0b31d23a1f203dc3bc84dc6dc4d09e689d99
--- /dev/null
+++ b/travail_individuel/Meyer/jeu_de_la_vie/main.c
@@ -0,0 +1,209 @@
+#include <stdio.h>
+#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};
+int naissance[TAILLE_TABLEAU_REGLES] = {0, 0, 0, 1, 0, 0, 0, 0, 0};
+
+SDL_Window *window;                   
+int width = 700;
+int height = 700;
+SDL_Renderer *renderer;
+SDL_Rect rect;
+SDL_Event event;
+int running = 1;
+int tailleAffichage = 30;
+
+void initSDL2(){
+
+    SDL_Init(SDL_INIT_VIDEO);              
+
+    window = SDL_CreateWindow(
+        "Jeu de la vie : monde délimité",                 
+        SDL_WINDOWPOS_CENTERED,           
+        SDL_WINDOWPOS_CENTERED,           
+        width,
+        height,
+        SDL_WINDOW_RESIZABLE
+    );
+
+    if(window == 0){
+        fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); 
+    }
+
+    renderer = SDL_CreateRenderer(
+        window,
+        -1,
+        SDL_RENDERER_ACCELERATED
+    );
+
+    if (renderer == 0) {
+        fprintf(stderr, "Erreur d'initialisation de la SDL : %s\n", SDL_GetError()); 
+        SDL_DestroyRenderer(renderer);                                  // Attention : on suppose que les NULL sont maintenus !!
+        renderer = NULL;
+    }
+
+}
+
+void destroySDL2(){
+    SDL_DestroyRenderer(renderer);
+    SDL_DestroyWindow(window);
+    SDL_Quit();
+}
+
+void initMonde(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+    int i = 0;
+    int j = 0;
+    
+    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
+        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+            monde[i][j] = 0;
+        }
+    } 
+}
+
+void afficheMonde(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+    int i = 0;
+    int j = 0;
+
+    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
+        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+            switch(monde[i][j]){
+                case 0:
+                    SDL_SetRenderDrawColor(renderer, 255, 255, 255, 0);
+                    break;
+                case 1:
+                    SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
+                    break;
+                default:
+                    printf("Problème valeur tableau monde.\n");
+                    break;
+            }
+            rect.x = tailleAffichage*i;
+            rect.y = tailleAffichage*j;
+            rect.w = tailleAffichage-2;
+            rect.h = tailleAffichage-2;
+            SDL_RenderFillRect(renderer, &rect);
+        }
+    }
+}
+
+void afficherEcran(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+    
+    SDL_SetRenderDrawColor(renderer, 0, 16, 158, 0);
+    SDL_RenderClear(renderer);
+
+    afficheMonde(monde);
+
+    SDL_RenderPresent(renderer);
+}
+
+void changeCellule(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE], int clic_x, int clic_y){
+    int ligne = clic_y/tailleAffichage;
+    int colonne = clic_x/tailleAffichage;
+    if(0 == monde[colonne][ligne]){
+        monde[colonne][ligne] = 1;
+    }else{
+        monde[colonne][ligne] = 0;
+    }
+}
+
+int nombreVoisinsVivants(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE], 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){
+        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 ){
+        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){
+        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){
+        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){
+        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] +
+                            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];
+    }
+    return nbrVoisinsVivants;
+}
+
+void reglesEvolutions(int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE]){
+    int i = 0;
+    int j = 0;
+    int nbrVoisinsVivants = 0;
+    for(i=0; i<TAILLE_MONDE_DELIMITE; i++){
+        for(j=0; j<TAILLE_MONDE_DELIMITE; j++){
+            nbrVoisinsVivants = nombreVoisinsVivants(monde, i, j);
+            if(monde[i][j]==1 && survie[nbrVoisinsVivants]==0){
+                monde[i][j] = 0;
+            }else if(monde[i][j]==0 && naissance[nbrVoisinsVivants]==1){
+                monde[i][j] = 1;
+            }
+        }
+    }
+}
+
+int main() {
+
+    int monde[TAILLE_MONDE_DELIMITE][TAILLE_MONDE_DELIMITE];
+
+    initSDL2();
+
+    initMonde(monde);
+
+    while (running) {
+        while (SDL_PollEvent(&event)){
+            switch(event.type){
+                case SDL_WINDOWEVENT:
+                    printf("window event\n");
+                    switch (event.window.event){
+                        case SDL_WINDOWEVENT_CLOSE:  
+                            printf("appui sur la croix\n");	
+                            break;
+                        case SDL_WINDOWEVENT_SIZE_CHANGED:
+                            width = event.window.data1;
+                            height = event.window.data2;
+                            printf("Size : %d%d\n", width, height);
+                            break;
+                    }   
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    printf("Appui :%d %d\n", event.button.x, event.button.y);
+                    changeCellule(monde, event.button.x, event.button.y);
+                    break;
+                case SDL_KEYDOWN:
+                    switch(event.key.keysym.sym){
+                        case SDLK_RIGHT:
+                            printf("goo calcul!\n");
+                            reglesEvolutions(monde);
+                            break;
+                        case SDLK_s:
+                            printf("stop calcul...\n");
+                            break;
+                        default:
+                            printf("une touche est tapee\n");
+                            break;
+                    }
+                    break;
+                case SDL_QUIT : 
+                    printf("on quitte\n");    
+                    running = 0;
+                    break;
+            }
+            //parfois on dessine ici
+            afficherEcran(monde);
+        }	
+        SDL_Delay(10); 
+    }
+    destroySDL2();
+    return 0;
+}
\ No newline at end of file
diff --git a/travail_individuel/Meyer/jeu_de_la_vie/makefile b/travail_individuel/Meyer/jeu_de_la_vie/makefile
new file mode 100644
index 0000000000000000000000000000000000000000..9e978d1309fe9b051df7c0c3bdd1e125a4aa5612
--- /dev/null
+++ b/travail_individuel/Meyer/jeu_de_la_vie/makefile
@@ -0,0 +1,11 @@
+CC=gcc 
+
+main:main.o
+	$(CC) -o main main.o -lm -lSDL2
+	@echo "=> Lancer le programme avec  ./main" 
+
+main.o:main.c
+	$(CC) -c main.c -g -Wall -Wextra
+
+clean:
+	rm -rf main main.o
diff --git a/travail_individuel/Meyer/pave_de_serpents/.vscode/c_cpp_properties.json b/travail_individuel/Meyer/pave_de_serpents/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000000000000000000000000000000000000..4d5b55df0634dd59212f0d153967b2f7af421e22
--- /dev/null
+++ b/travail_individuel/Meyer/pave_de_serpents/.vscode/c_cpp_properties.json
@@ -0,0 +1,17 @@
+{
+    "configurations": [
+        {
+            "name": "Linux",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "/usr/include/SDL2"
+            ],
+            "defines": [],
+            "compilerPath": "/usr/bin/gcc",
+            "cStandard": "gnu17",
+            "cppStandard": "gnu++14",
+            "intelliSenseMode": "linux-gcc-x64"
+        }
+    ],
+    "version": 4
+}
\ No newline at end of file
diff --git a/travail_individuel/Meyer/pave_de_serpents/.vscode/settings.json b/travail_individuel/Meyer/pave_de_serpents/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..236a91b402122022af296ef7d154061e140897b5
--- /dev/null
+++ b/travail_individuel/Meyer/pave_de_serpents/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+    "files.associations": {
+        "sdl.h": "c"
+    }
+}
\ No newline at end of file
diff --git a/travail_individuel/Meyer/x_fenetre/.vscode/c_cpp_properties.json b/travail_individuel/Meyer/x_fenetre/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000000000000000000000000000000000000..4d5b55df0634dd59212f0d153967b2f7af421e22
--- /dev/null
+++ b/travail_individuel/Meyer/x_fenetre/.vscode/c_cpp_properties.json
@@ -0,0 +1,17 @@
+{
+    "configurations": [
+        {
+            "name": "Linux",
+            "includePath": [
+                "${workspaceFolder}/**",
+                "/usr/include/SDL2"
+            ],
+            "defines": [],
+            "compilerPath": "/usr/bin/gcc",
+            "cStandard": "gnu17",
+            "cppStandard": "gnu++14",
+            "intelliSenseMode": "linux-gcc-x64"
+        }
+    ],
+    "version": 4
+}
\ No newline at end of file
diff --git a/travail_individuel/Meyer/x_fenetre/.vscode/settings.json b/travail_individuel/Meyer/x_fenetre/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..088a016fe65a59c2cfcbb56823ba698a0d776631
--- /dev/null
+++ b/travail_individuel/Meyer/x_fenetre/.vscode/settings.json
@@ -0,0 +1,6 @@
+{
+    "files.associations": {
+        "main.C": "cpp",
+        "cmath": "cpp"
+    }
+}
\ No newline at end of file