diff --git a/main.c b/main.c
index b57c4d87c70fdd597a3d7c21a3b2b49984b35b31..b48ca923cf47ed7b016b459f339af3a0e9ff9749 100644
--- a/main.c
+++ b/main.c
@@ -5,13 +5,13 @@
 int main(int argc, char *argv[])
 {
     srand(time(NULL));
-    bool gameover, tir, exit, vagueTerminee;
+    bool gameover, tir, exit, switchArme, vagueTerminee;
     SDL_Window *fenetre;
     SDL_Event evenements;
     SDL_Renderer *ecran;
-    SDL_Texture *tmp, *balleSprite, *sprites[5], *spritesMap[20];
+    SDL_Texture *sprites[12], *spritesMap[20];
     float mouseX, mouseY;
-    int vitesse, vagueNum, tempsActuel, tempsPrecedent, tempsActuelTir, tempsActuelVague, tempsPrecedentVague,
+    int vitesse, vagueNum, nbTues, arme, tempsActuel, tempsPrecedent, tempsActuelTir, tempsActuelVague, tempsPrecedentVague,
         tempsActuelAnim, tempsPrecedentAnim, xCamera, yCamera, dxCamera, dyCamera, vaguesEnnemis[100];
     char map[62][60];
     ListeB ballesTirees;
@@ -20,7 +20,7 @@ int main(int argc, char *argv[])
     ListeE effetsListe;
     Perso p, *joueur_ptr;
     Mix_Music *musique;
-    Mix_Chunk *sons[2];
+    Mix_Chunk *sons[3];
 
 
     //Initialisation SDL
@@ -51,7 +51,6 @@ int main(int argc, char *argv[])
     ecran = SDL_CreateRenderer(fenetre, -1, SDL_RENDERER_ACCELERATED);
 
     //Chargement images
-    balleSprite = charger_image("sprites/projectiles/balle/balle_longue_jaune.png", ecran, 255, 255, 255);
     //Murs + Sols
     spritesMap[0] = charger_image("sprites/map/sol.png", ecran, 0, 0, -1);
     spritesMap[1] = charger_image("sprites/map/mur_h.png", ecran, 255, 255, 255);
@@ -75,17 +74,18 @@ int main(int argc, char *argv[])
     spritesMap[19] = charger_image("sprites/map/fontaine.png", ecran, 0, 0, -1);
 
     //Personnages + Effets
-    tmp = charger_image("sprites/perso/survivor_rifle.png", ecran, 255, 255, 255);
-    sprites[0] = tmp;
-    tmp = charger_image("sprites/ennemis/zombie/move/zombie_moveV2.png", ecran, 0, 0, -1);
-    sprites[1] = tmp;
-    tmp = charger_image("sprites/ennemis/zombie/attack/zombie_attack.png", ecran, 0, 0, -1);
-    sprites[2] = tmp;
-    tmp = charger_image("sprites/effets/blood/blood_hitv3.png", ecran, 0, 0, -1);
-    sprites[3] = tmp;
-    tmp = charger_image("sprites/effets/blood/blood_splatter.png", ecran, 255, 255, 255);
-    sprites[4] = tmp;
-
+    sprites[0] = charger_image("sprites/perso/survivor_handgun.png", ecran, 255, 255, 255);
+    sprites[1] = charger_image("sprites/ennemis/zombie/move/zombie_moveV2.png", ecran, 0, 0, -1);
+    sprites[2] = charger_image("sprites/ennemis/zombie/attack/zombie_attack.png", ecran, 0, 0, -1);
+    sprites[3] = charger_image("sprites/effets/blood/blood_hitv3.png", ecran, 0, 0, -1);
+    sprites[4] = charger_image("sprites/effets/blood/blood_splatter.png", ecran, 255, 255, 255);
+    sprites[5] = charger_image("sprites/perso/survivor_shotgun.png", ecran, 255, 255, 255);
+    sprites[6] = charger_image("sprites/perso/survivor_rifle.png", ecran, 255, 255, 255);
+    sprites[7] = charger_image("sprites/projectiles/balle/balle_handgun.png", ecran, 255, 255, 255);
+    sprites[8] = charger_image("sprites/projectiles/balle/balle_shotgun.png", ecran, 255, 255, 255);
+    sprites[9] = charger_image("sprites/projectiles/balle/balle_rifle.png", ecran, 255, 255, 255);
+    sprites[10] = charger_image("sprites/perso/survivor_shotgun.png", ecran, 255, 255, 255);
+    sprites[11] = charger_image("sprites/perso/survivor_rifle.png", ecran, 255, 255, 255);
 
     //Sons
     musique = NULL;
@@ -98,10 +98,13 @@ int main(int argc, char *argv[])
 
       gameover = false;
       tir = false;
+      switchArme = false;
       vagueTerminee = false;
 
       vitesse = 25;
       vagueNum = 0;
+      nbTues = 0;
+      arme = 0;
       tempsActuel = 0;
       tempsPrecedent = 0;
       tempsActuelTir = 0;
@@ -142,37 +145,48 @@ int main(int argc, char *argv[])
                 gameover = true;
                 exit = true;
                 break;
+              case SDL_MOUSEWHEEL:
+                if(evenements.wheel.y > 0){
+                  arme++;
+                  if(arme > 2){
+                    arme = 0;
+                  }
+                } else if(evenements.wheel.y < 0){
+                  arme--;
+                  if(arme < 0){
+                    arme = 2;
+                  }
+                }
+                switchArme = true;
+                break;
               case SDL_MOUSEMOTION:
                 mouseX = evenements.motion.x;
                 mouseY = evenements.motion.y;
                 break;
               case SDL_MOUSEBUTTONDOWN:
-                switch(evenements.button.button)
-                {
+                switch(evenements.button.button){
                   case SDL_BUTTON_LEFT:
                     tir = true;
                     break;
                 }
                 break;
               case SDL_MOUSEBUTTONUP:
-                switch(evenements.button.button)
-                {
+                switch(evenements.button.button){
                   case SDL_BUTTON_LEFT:
                     tir = false;
                     break;
                 }
                 break;
-
               case SDL_KEYDOWN:
-                switch(evenements.key.keysym.sym)
-                {
+                switch(evenements.key.keysym.sym){
                   case SDLK_ESCAPE:
                     gameover = true;
                     exit = true;
                     break;
                 }
                 break;
-
+              default:
+                break;
             }
           }
 
@@ -204,7 +218,11 @@ int main(int argc, char *argv[])
 
           joueur_ptr = joueur(persosListe);
           if(joueur_ptr != NULL){
-            //Gestion d�placement/angle de tir
+            if(switchArme){
+              joueur_ptr->arme = arme;
+              changer_arme_joueur(joueur_ptr, arme, sprites);
+              switchArme = false;
+            }
             joueur_ptr->tir = tir;
             deplacement_joueur(joueur_ptr, mursListe, &xCamera, &yCamera, &dxCamera, &dyCamera);
             angle_joueur((joueur_ptr), mouseX, mouseY);
@@ -223,13 +241,12 @@ int main(int argc, char *argv[])
             gameover = true;
           }
 
-
           //D�placement/angle de tir ennemis
           deplacement_ennemis(persosListe, mursListe, &effetsListe, sprites, xCamera, yCamera, dxCamera, dyCamera);
 
           //Tir
           tempsActuelTir = SDL_GetTicks();
-          ballesTirees = tir_update(ballesTirees, persosListe, mursListe, &effetsListe, tempsActuelTir, balleSprite, vitesse, xCamera, yCamera, sprites, &sons[0]);
+          ballesTirees = tir_update(ballesTirees, persosListe, mursListe, &effetsListe, tempsActuelTir, vitesse, xCamera, yCamera, &nbTues, sprites, &sons[0]);
 
           //Affichage
           SDL_RenderClear(ecran);
@@ -251,8 +268,6 @@ int main(int argc, char *argv[])
     //Nettoyage
     SDL_DestroyWindow(fenetre);
     SDL_DestroyRenderer(ecran);
-    SDL_DestroyTexture(balleSprite);
-    SDL_DestroyTexture(tmp);
     Mix_FreeMusic(musique);
     Mix_CloseAudio();
     SDL_Quit();