diff --git a/main.c b/main.c
index 6c2ea1f5d5b893c7424bf41ad56280830cde41e4..703029d844129a0e689ddcf3d6602b79d16d5a78 100644
--- a/main.c
+++ b/main.c
@@ -18,7 +18,7 @@ int main(int argc, char *argv[])
     SDL_Window *fenetre;
     SDL_Event evenements;
     SDL_Renderer *ecran;
-    SDL_Texture *fond, *perso, *balleLongueJaune;
+    SDL_Texture *fond, *perso, *balleLongueJaune, *mur;
     SDL_Rect persoPos;
     float mouseX, mouseY;
     int vitesse = 25, tempsActuel = 0, tempsPrecedent = 0, tempsActuelTir = 0, tempsActuelAnim = 0, tempsPrecedentAnim = 0;
@@ -26,7 +26,84 @@ int main(int argc, char *argv[])
     ListeP persosListe;
     Perso *joueur_ptr;
     SDL_Texture *sprites[3];
-    
+
+    SDL_Rect mur1;
+    mur1.x = 500;
+    mur1.y = 500;
+    mur1.h = 100;
+    mur1.w = 104;
+    SDL_Rect mur2;
+    mur2.x = 10;
+    mur2.y = 10;
+    mur2.h = 56;
+    mur2.w = 47;
+    SDL_Rect mur3;
+    mur3.x = 500;
+    mur3.y = 659;
+    mur3.h = 85;
+    mur3.w = 500;
+
+    SDL_Rect tabMur[3];
+    tabMur[0] = mur1;
+    tabMur[1] = mur2;
+    tabMur[2] = mur3;
+
+    /**
+
+    FILE* fichier = NULL;
+    fichier = fopen("map.txt", "r");
+    char caractereActuel;
+    char nombre = "";
+
+    if (fichier != NULL){
+        // Boucle de lecture des caract�res un � un
+        int i = 0;
+        do
+        {
+            if( 'M' == fgetc(fichier)){ // On lit le caract�re
+            printf("J'ai trouv� un mur !");
+            caractereActuel = fgetc(fichier);
+
+            while(caractereActuel != ':'){
+                caractereActuel = fgetc(fichier);
+                nombre = nombre + caractereActuel;
+                printf("%c", nombre);
+
+            }
+            printf("%c", nombre);
+            tabMur[i].x = nombre;
+
+            while(caractereActuel != ':'){
+                caractereActuel = fgetc(fichier);
+            }
+
+            while(caractereActuel != ':'){
+                caractereActuel = fgetc(fichier);
+            }
+            tabMur[i].y = fgetc(fichier);
+
+            while(caractereActuel != ':'){
+                caractereActuel = fgetc(fichier);
+            }
+            tabMur[i].w = fgetc(fichier);
+
+            while(caractereActuel != ':'){
+                caractereActuel = fgetc(fichier);
+            }
+            tabMur[i].h = fgetc(fichier);
+            i++;
+            }
+            else{
+                caractereActuel = fgetc(fichier);
+            }
+
+        } while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourn� EOF (fin de fichier)
+
+        fclose(fichier);
+    }
+    */
+
+
 
     //Initialisation SDL
     if(SDL_Init(SDL_INIT_VIDEO < 0))
@@ -38,7 +115,7 @@ int main(int argc, char *argv[])
 
     IMG_Init(IMG_INIT_PNG);
 
-    //Cr�ation fen�tre
+    //Création fenêtre
     fenetre = SDL_CreateWindow("gameName", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1000, 720, SDL_WINDOW_RESIZABLE);
     if(fenetre == NULL)
     {
@@ -46,12 +123,13 @@ int main(int argc, char *argv[])
       return EXIT_FAILURE;
     }
 
-    //Cr�ation renderer
+    //Création renderer
     ecran = SDL_CreateRenderer(fenetre, -1, SDL_RENDERER_ACCELERATED);
 
     //Chargement images
     balleLongueJaune = charger_image("sprites/projectiles/balle/balle_longue_jaune.png", ecran);
     fond = charger_image("sprites/fond.png", ecran);
+    mur = charger_image("sprites/mur.png", ecran);
     perso = charger_image("sprites/perso/handgun/idle/survivor_idle.png", ecran);
     sprites[0] = perso;
     perso = charger_image("sprites/perso/handgun/move/survivor_moving.png", ecran);
@@ -64,18 +142,18 @@ int main(int argc, char *argv[])
     p = nouvel_ennemi_1(ecran, sprites);
     persosListe = cons_listeP(persosListe, p);
 
-    //Pareil pour la balle + ses autres param�tres (voir projectile.h)
+    //Pareil pour la balle + ses autres paramètres (voir projectile.h)
     balle b = nouvelle_balle(balleLongueJaune, 0, persoPos);
     ballesTirees = nouvelle_listeB(b);
 
     //Boucle de jeu
     while(!gameover)
     {
-      //Petit timer pour pas d�passer 60 ex�cutions/sec (provisoire)
+      //Petit timer pour pas dépasser 60 exécutions/sec (provisoire)
       tempsActuel = SDL_GetTicks();
       if (tempsActuel > tempsPrecedent + 16)
       {
-        //D�tection �v�nements
+        //Détection événements
         while(SDL_PollEvent(&evenements))
         {
           switch(evenements.type)
@@ -128,18 +206,21 @@ int main(int argc, char *argv[])
 
 
 
-        //Gestion d�placement/angle de tir
-        deplacement_joueur(joueur_ptr);
+        //Gestion déplacement/angle de tir
+        deplacement_joueur(joueur_ptr, tabMur);
         angle_joueur((joueur_ptr), mouseX, mouseY);
 
         //Tir
         tempsActuelTir = SDL_GetTicks();
         ballesTirees = tir_update(ballesTirees, persosListe, tempsActuelTir, balleLongueJaune, vitesse);
-	
-	
+
+
         //Affichage
         SDL_RenderClear(ecran);
         SDL_RenderCopy(ecran, fond, NULL, NULL);
+        for(int i = 0; i < 3; i++){
+            SDL_RenderCopyEx(ecran, mur, NULL, &tabMur[i], 0, NULL, SDL_FLIP_NONE);
+        }
         afficher_listeP(ecran, persosListe);
         afficher_listeB(ecran, ballesTirees);
         SDL_RenderPresent(ecran);
diff --git a/map.txt b/map.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5c1f8833c0cb8e3d3d48121a9163e953c33f8e15
--- /dev/null
+++ b/map.txt
@@ -0,0 +1,3 @@
+M:322:523:20:40
+M:20:231:100:30
+M:800:600:60:40
\ No newline at end of file
diff --git a/personnage.c b/personnage.c
index 56b9f759ada5c26046299576064d6660aaefd7f2..ccc692ebc38acfa593b354f8bc47fb93c36b73a6 100644
--- a/personnage.c
+++ b/personnage.c
@@ -31,7 +31,7 @@ Perso nouvel_ennemi_1(SDL_Renderer *renderer, SDL_Texture **sprites){
   Perso p;
   p.tempsTirPrecedent = 0;
   p.image = sprites[2];
-  //g�n�re des coordonn�es de spawn al�atoires(provisoire)
+  //génère des coordonnées de spawn aléatoires(provisoire)
   p.pos.x = rand()%900 + 100;
   p.pos.y = rand()%600 + 100;
   p.pos.w = 60;
@@ -55,7 +55,7 @@ void afficher_perso(SDL_Renderer *renderer, Perso p)
   SDL_RenderCopyEx(renderer, p.image, &p.srcrect, &p.pos, p.angle, NULL, SDL_FLIP_NONE);
 }
 
-void deplacement_joueur(Perso *p)
+void deplacement_joueur(Perso *p, SDL_Rect *tabMur)
 {
   int dX = 0;
   int dY = 0;
@@ -86,8 +86,29 @@ void deplacement_joueur(Perso *p)
     dY = dY/4;
   }
 
-  p->pos.x += dX * p->vitesse;
-  p->pos.y += dY * p->vitesse;
+
+  int res = 0;
+  if(p->pos.x + dX*p->vitesse < 950 && p->pos.x + dX*p->vitesse > 0 && p->pos.y + dY*p->vitesse < 670 && p->pos.y + dY*p->vitesse > 0){
+  for(int i = 0; i < 3; i++){
+        if (p->pos.x + dX*p->vitesse <= tabMur[i].x + tabMur[i].w && p->pos.x + p->pos.w + dX*p->vitesse >= tabMur[i].x && p->pos.y + dY*p->vitesse<= tabMur[i].y + tabMur[i].h
+            && p->pos.h + p->pos.y + dY*p->vitesse >= tabMur[i].y ) {
+             //collision d�tect�e !
+            res = -100;
+
+        }
+        else{
+            res += 1;
+
+        }
+    }
+
+  }
+
+  if(res >= 1){
+        p->pos.x += dX * p->vitesse;
+        p->pos.y += dY * p->vitesse;
+  }
+
 
 }
 
diff --git a/personnage.h b/personnage.h
index e1f8ea1792dd9f03c038f39a94043a2605ddafca..94d2b72162ffcfa3c31509bb50dea81b43e5cd26 100644
--- a/personnage.h
+++ b/personnage.h
@@ -28,6 +28,6 @@ struct s_Personnage
 Perso nouveau_joueur(SDL_Renderer *renderer, SDL_Texture **sprites);
 Perso nouvel_ennemi_1(SDL_Renderer *renderer, SDL_Texture **sprites);
 void afficher_perso(SDL_Renderer *renderer, Perso p);
-void deplacement_joueur(Perso *p);
+void deplacement_joueur(Perso *p, SDL_Rect *tabMur);
 void angle_joueur(Perso *p, float mouseX, float mouseY);
 void animer_perso(Perso *p);
diff --git a/sprites/mur.png b/sprites/mur.png
new file mode 100644
index 0000000000000000000000000000000000000000..9651a050c7c8a843c74ab7fce7cb01a165f012da
Binary files /dev/null and b/sprites/mur.png differ