diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000000000000000000000000000000000000..5c736610963ec80275f7a6bd94ac5c3aae33e562
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+    "files.associations": {
+        "sdl2-ttf-light.h": "c"
+    }
+}
\ No newline at end of file
diff --git a/graphics.c b/graphics.c
new file mode 100644
index 0000000000000000000000000000000000000000..cd1e139696bcc357822026dcd33861313c474344
--- /dev/null
+++ b/graphics.c
@@ -0,0 +1,119 @@
+#include "graphics.h"
+
+walls_t* allocation_Walls(){
+    walls_t* walls=malloc(sizeof(walls_t));
+    return walls;
+}
+
+int init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height)
+{
+    if (0 != SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO))
+    {
+        fprintf(stderr, "Erreur initialisation de la SDL : %s", SDL_GetError());
+        return -1;
+    }
+    if (0 != SDL_CreateWindowAndRenderer(width, height, SDL_WINDOW_SHOWN, window, renderer))
+    {
+        fprintf(stderr, "Erreur lors de la creation de l'image et du renderer : %s", SDL_GetError());
+        return -1;
+    }
+    return 0;
+}
+
+SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer)
+{
+    SDL_Surface *img = NULL;
+    SDL_Texture *texture = NULL;
+    img = SDL_LoadBMP(nomfichier);
+    if (NULL== img){
+        fprintf(stderr,"Erreur dans le chargement image: %s", SDL_GetError());
+        return NULL;
+    }
+    SDL_SetColorKey(img,SDL_TRUE, SDL_MapRGB(img->format,255,0,255));
+    texture = SDL_CreateTextureFromSurface(renderer, img);
+    // Libérer une surface
+    SDL_FreeSurface(img);
+    if (texture == NULL){
+        fprintf(stderr,"Erreur dans le chargement image: %s", SDL_GetError());
+        return NULL;
+    }
+    return texture;
+}
+
+void apply_texture(walls_t* walls,SDL_Renderer* ecran){
+    walls->texture_joueur=charger_image("ressources/personnage.bmp",ecran);
+    walls->texture_brick=charger_image("ressources/pavage.bmp",ecran);
+}
+
+void init_wall(walls_t* walls,int px,int py,int postx,int posty){
+    walls->bricks.w=BRICKW;
+    walls->bricks.h=BRICKH;
+    walls->bricks.x=BRICKW*postx;
+    walls->bricks.y=BRICKH*posty;
+    walls->Src.x=BRICKW*px;
+    walls->Src.y=BRICKH*py;
+    walls->Src.w=BRICKW;
+    walls->Src.h=BRICKH;
+}
+
+void affichage_bricks(SDL_Renderer* ecran,walls_t* walls,char** map,int nbc,int nbl){
+    for (int i=0;i<nbl;i++){
+        for (int j = 0; j< nbc; j++)
+        {
+            if(map[i][j]=='L'){
+                init_wall(walls,j,i,9,3);
+                SDL_RenderCopy(ecran,walls->texture_brick,&(walls->bricks),&(walls->Src));       
+            }
+            else if(map[i][j]=='#'){
+                init_wall(walls,j,i,10,3);
+                SDL_RenderCopy(ecran,walls->texture_brick,&(walls->bricks),&(walls->Src));              
+            }
+            else if (map[i][j]=='S'){
+                init_wall(walls,j,i,13,3);
+                SDL_RenderCopy(ecran,walls->texture_brick,&(walls->bricks),&(walls->Src));
+            }
+        }
+    }
+}
+
+void handle_events(SDL_Event *event, player_t* player,char** map){
+    while (SDL_PollEvent(event)){
+        if (event->type ==SDL_QUIT){
+            player->gameover=1;
+        }
+        
+		//si une touche est appuyée
+		if(event->type == SDL_KEYDOWN){
+			if (event->key.keysym.sym==SDLK_ESCAPE){  //si on appui sur la touche Echap, on quitte le jeu.
+				player->gameover=1;
+			}
+			if(event->key.keysym.sym == SDLK_LEFT){
+				movement(map,player,'q'); // fléche vers la gauche
+                change_movement_player(player,0,1);
+                change_movement_player(player,1,1);
+            }
+			if(event->key.keysym.sym == SDLK_RIGHT){
+				movement(map,player,'d'); // fléche vers la droite
+                change_movement_player(player,0,2);
+                change_movement_player(player,1,2);
+            }
+			if(event->key.keysym.sym == SDLK_UP){
+                movement(map,player,'z');// fléche vers le haut
+                change_movement_player(player,0,3);
+                change_movement_player(player,1,3);
+			}
+			if(event->key.keysym.sym == SDLK_DOWN){
+                movement(map,player,'s');// fléche vers le bas
+                change_movement_player(player,0,0);
+                change_movement_player(player,1,0);
+            }
+		}
+        
+    }
+}
+
+void clean_walls(walls_t* walls){
+    SDL_DestroyTexture(walls->texture_joueur);
+    SDL_DestroyTexture(walls->texture_brick);
+    free(walls);
+}
diff --git a/graphics.h b/graphics.h
new file mode 100644
index 0000000000000000000000000000000000000000..e44cbcb50934c97f7346e5e22c430b9631b435a4
--- /dev/null
+++ b/graphics.h
@@ -0,0 +1,27 @@
+#ifndef GRAPHICS_H
+#define GRAPHICS_H
+
+#include "player.h"
+
+#define SCREENH 600
+#define SCREENW 600
+#define BRICKH 32
+#define BRICKW 32
+
+typedef struct walls_s
+{
+    SDL_Rect bricks;
+    SDL_Rect Src;
+    SDL_Texture* texture_joueur;
+    SDL_Texture* texture_brick;
+}walls_t;
+
+walls_t* allocation_Walls();
+int init_sdl(SDL_Window **window, SDL_Renderer **renderer, int width, int height);
+SDL_Texture* charger_image (const char* nomfichier, SDL_Renderer* renderer);
+void apply_texture(walls_t* walls,SDL_Renderer* ecran);
+void init_wall(walls_t* walls,int px,int py,int postx,int posty);
+void affichage_bricks(SDL_Renderer* ecran,walls_t* walls,char** map,int nbc,int nbl);
+void handle_events(SDL_Event *event,player_t* player,char** map);
+void clean_walls(walls_t* walls);
+#endif
\ No newline at end of file
diff --git a/trap.c b/trap.c
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/trap.h b/trap.h
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391