diff --git a/resources/Classes.xml b/resources/Classes.xml
index c5fbe36cba73590bb68fa4647ab966222acd8e60..d15fd042a631d2ddc816c3d97f61cfd9d94d9950 100644
--- a/resources/Classes.xml
+++ b/resources/Classes.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
 <Classes>
 	<Classe id="C_MAGE" name="Mage" PV="100" PM="150" MV="2" Desc="Le feu, ça brûle ">
 		<Skills>
@@ -31,7 +31,7 @@
 		<Skin id="SP_WAR"  f_default="../resources/Skins/guerrier.bmp"  f_selected="../resources/Skins/guerrier_selected.bmp" f_healed="../resources/Skins/guerrier_healed.bmp" f_damaged="../resources/Skins/guerrier_damaged.bmp">
 		</Skin>
 	</Classe>
-	<Classe id="C_HEAL" name="Guerrisseur" PV="100" PM="150" MV="2" Desc="Heal est des notres">
+	<Classe id="C_HEAL" name="Guerisseur" PV="100" PM="150" MV="2" Desc="Heal est des notres">
 		<Skills>
 			<Skill id="S_HEAL" name="Soin" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" DM_DUR="" HL="" HL_DUR="" PARA="" />
@@ -73,7 +73,7 @@
 				<Effect id="" name="" TURNS="" DM="" DM_DUR="" HL="" HL_DUR="" PARA="" />
 			</Skill>
 		</Skills>
-		<Skin id="SP_ARCHER"  f_default="../resources/Skins/voleurarcher.bmp"  f_selected="../resources/Skins/archer_selected.bmp" f_healed="../resources/Skins/archer_healed.bmp" f_damaged="../resources/Skins/archer_damaged.bmp">
+		<Skin id="SP_ARCHER"  f_default="../resources/Skins/archer.bmp"  f_selected="../resources/Skins/archer_selected.bmp" f_healed="../resources/Skins/archer_healed.bmp" f_damaged="../resources/Skins/archer_damaged.bmp">
     	<Skin>
 	</Classe>
 </Classes>
diff --git a/src/SDL_bis.c b/src/SDL_bis.c
index ef378bb9c311e83af370060a25a7e10d54605aa1..0133f3a0d3eb64ebb06075f210fe5e1a66cdc4b1 100644
--- a/src/SDL_bis.c
+++ b/src/SDL_bis.c
@@ -6,39 +6,87 @@
 #include "structures.h"
 #include "controleur.h"
 
-int afficherListe(char** tabChoix, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
+char* afficherListe(char** nomsClasses, char** skinsClasses, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
 {
-    int i;
+    int i, quitter;
+    char* classeChoisie;
     SDL_Surface* fenetre=NULL;
     SDL_Event event;
-    SDL_Surface* tabTextes[]={NULL};
+    SDL_Surface* tabTextes[nbChoix];
+    SDL_Surface* tabSkins[nbChoix];
     SDL_Rect positionsTextes[nbChoix];
+    SDL_Rect positionsSkins[nbChoix];
     SDL_Color couleurNoire = {0, 0, 0};
 
-    fenetre = SDL_SetVideoMode(400, 400, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
+    for(i=0;i<nbChoix;i++){
+        tabSkins[i]=SDL_LoadBMP(skinsClasses[i]);
+        if (!tabSkins[i])
+        {
+            printf("Unable to load bitmap: %s\n", skinsClasses[i]);
+            return 1;
+        }
+        SDL_SetColorKey(tabSkins[i], SDL_SRCCOLORKEY, SDL_MapRGB(tabSkins[i]->format, 0, 0, 255));
+    }
+
+    fenetre = SDL_SetVideoMode(260, nbChoix*tabSkins[0]->h, 32, SDL_HWSURFACE|SDL_DOUBLEBUF|SDL_RESIZABLE);
     SDL_FillRect(fenetre,NULL,SDL_MapRGB(fenetre->format,0,0,0));
 
-    while(i!=20)
+    quitter=0;
+    while(quitter==0)
     {
         SDL_WaitEvent(&event);
         switch(event.type)
         {
             case SDL_QUIT:
-                i=20;
+                quitter=1;
+                break;
+            case SDL_MOUSEBUTTONDOWN:
+                for(i=0;i<nbChoix;i++)
+                    {
+                        if(event.button.y/positionsSkins[0].h==i)
+                        {
+                            classeChoisie=nomsClasses[i];
+                            quitter=1;
+                        }
+                    }
                 break;
             default:
                 break;
         }
         for(i=0;i<nbChoix;i++)
         {
-            tabTextes[i]=TTF_RenderText_Shaded(police, tabChoix[i], couleurTexte,couleurNoire);
-            positionsTextes[i].x=0;
-            positionsTextes[i].y=i*tabTextes[i]->h+4;
+            tabTextes[i]=TTF_RenderText_Shaded(police, nomsClasses[i], couleurTexte,couleurNoire);
+            positionsSkins[i].y=i*tabSkins[0]->h;
+            positionsSkins[i].x=0;
+            positionsTextes[i].x=tabSkins[i]->w+4;
+            positionsTextes[i].y=positionsSkins[i].y+(tabSkins[i]->h/3);
             SDL_BlitSurface(tabTextes[i],NULL,fenetre,&positionsTextes[i]);
+            SDL_BlitSurface(tabSkins[i],NULL,fenetre,&positionsSkins[i]);
         }
         SDL_Flip(fenetre);
     }
-    return 0;
+    SDL_FreeSurface(fenetre);
+    return classeChoisie;
+}
+
+int ecranConfiguration(EtatsJeu* etat, SDL_Surface* ecran)
+{
+    SDL_Event event;
+    SDL_Color couleurBlanche = {255, 255, 255};
+    while(*etat==CONFIGURATION)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type)
+        {
+            case SDL_QUIT:
+                etat=FERMER;
+                break;
+            case SDL_MOUSEBUTTONDOWN:
+                afficherListe(obtenirNomsClasses(), obtenirSkinsClasses(),nbClasses(), TTF_OpenFont("../resources/fonts/arial.ttf",26),couleurBlanche);
+                break;
+        }
+        SDL_Flip(ecran);
+    }
 }
 
 int SDL_bis()
@@ -185,23 +233,10 @@ int SDL_bis()
     SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis);
     SDL_Flip(ecran);
 
-    afficherListe(obtenirNomsClasses(), nbClasses(), TTF_OpenFont("../resources/fonts/arial.ttf",26),couleurBlanche);
-    while(etat==CONFIGURATION)
+    if(etat==CONFIGURATION)
     {
-        SDL_WaitEvent(&event);
-        switch(event.type)
-        {
-            case SDL_QUIT:
-                etat=FERMER;
-                break;/*
-            case SDL_MOUSEBUTTONDOWN:
-                if (event.button.x<pos_texte.x+texte->w&&event.button.x>pos_texte.x&&event.button.y<pos_texte.y+texte->h&&event.button.y>pos_texte.y)
-                    etat=CONFIGURATION;
-                break;
-        }
-        SDL_BlitSurface(texte,NULL,ecran,&pos_texte);*/
-        SDL_Flip(ecran);
-        }
+        ecranConfiguration(&etat, ecran);
     }
+
     return 0;
 }
diff --git a/src/controleur.c b/src/controleur.c
index c593c4f5e0c49fc4a0835f4157c9ef7d66bec7a8..399de853898c79e3917b52ec57297af112c888f8 100644
--- a/src/controleur.c
+++ b/src/controleur.c
@@ -39,7 +39,7 @@ void initJeu(){
     Joueur * j = nouveauJoueur();
     if(j!=NULL){
         setNomJoueur(j,nomDuJoueur);
-        if(addParticipant(partieGlobale,j)==0){
+        if(addParticipant(partieGlobale,j)==1){
             *etat =LANCEMENT;
         }
         else{