diff --git a/resources/Maps.txt b/resources/Maps.txt
index 79cb99b30ad75a95b4b0010c1a936749b862cea4..707789f33827b43b93173e1a8815e0a4aae25878 100644
--- a/resources/Maps.txt
+++ b/resources/Maps.txt
@@ -1,78 +1,67 @@
-MAP1 10*16
+MAP1 6 8
 
-MFMMMFFPPF
-PFFFFFFPPF
-PFPPPFFPPF
-PFPPPFFPPF
-PFPPFFFPPF
-PFMMMFFPPF
-PFMFFFFPPF
-PFMMPFFPPF
-PFPPPFFPPF
-PFPPFFPPFP
-PFFPPFFPPF
-PFFFMFFPPF
-PFPMMFFPPF
-PFMMMFFPPF
-PFFFPFFPPF
-PFPPPPFPPF
+FFMMMF
+FFMMMF
+FFMMMF
+FFMMMF
+FFMMMF
+FFMMMF
+FFMMMF
+FFMMMF
 
 
-MAP2 10*16
+MAP2 5 4
 
-FFMMMFFPPF
-PFFFFFFPPF
-PFPPPFFPPF
-PFPPPFFPPF
-PFPPFFFPPF
-PFMMMFFPPF
-PFMFFFFPPF
-PFMMPFFPPF
-PFPPPFFPPF
-PFPPFFPPFP
-PFFPPFFPPF
-PFFFMFFPPF
-PFPMMFFPPF
-PFMMMFFPPF
-PFFFPFFPPF
-PFPPPPFPPF
+FFPPM
+FFPPM
+FFPPM
+FFPPM
 
 
-MAP3 10*16
+MAP3 6 10
 
-FFMMMFFPPF
-PFFFFFFPPF
-PFPPPFFPPF
-PFPPPFFPPF
-PFPPFFFPPF
-PFMMMFFPPF
-PFMFFFFPPF
-PFMMPFFPPF
-PFPPPFFPPF
-PFPPFFPPFP
-PFFPPFFPPF
-PFFFMFFPPF
-PFPMMFFPPF
-PFMMMFFPPF
-PFFFPFFPPF
-PFPPPPFPPF
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
+FFPFMP
 
 
-MAP4 10*16
+MAP4 16 10
+
+MPPFFPPPFMMPPFFP
+PPFMMPPFFPPPFMMP
+PFFPPPFMMPPFFPPP
+FMMPPFFPPPFMMPPF
+FPPPFMMPPFFPPPFM
+MPPFFPPPEMMPPFFP
+PPFMMEEEFPPPFMMP
+PFFPPPEEMPPFFPPP
+FMMPPFFPPPFMMPPF
+FPPPFMMPPFFPPPFM
+
+
+MAP5 10 16
+
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
+MPPFFPPPFM
 
-FFMMMFFPPF
-PFFFFFFPPF
-PFPPPFFPPF
-PFPPPFFPPF
-PFPPFFFPPF
-PFMMMFFPPF
-PFMFFFFPPF
-PFMMPFFPPF
-PFPPPFFPPF
-PFPPFFPPFP
-PFFPPFFPPF
-PFFFMFFPPF
-PFPMMFFPPF
-PFMMMFFPPF
-PFFFPFFPPF
-PFPPPPFPPF
\ No newline at end of file
diff --git a/resources/case_brillante.bmp b/resources/case_brillante.bmp
index 3404ed557f71b7478cb5452288a380eae35d46ac..c8b230bbb3134a6e490e884e616ad209e61fcdb4 100644
Binary files a/resources/case_brillante.bmp and b/resources/case_brillante.bmp differ
diff --git a/resources/continuer.bmp b/resources/continuer.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..a20ca59407de4c55b89fa2baf63467b19aa7a7b8
Binary files /dev/null and b/resources/continuer.bmp differ
diff --git a/resources/foret.bmp b/resources/foret.bmp
index ed15b2dfc38a584980251eae08a6cb111f809678..f2a60466e58a6620326ac82f02c583bb83b9b1b2 100644
Binary files a/resources/foret.bmp and b/resources/foret.bmp differ
diff --git a/resources/montagne.bmp b/resources/montagne.bmp
index 7f9d39d2351285b70850afa38de5448b2481111a..13c39287958ea3a0363709fb8e2f3ed135c60490 100644
Binary files a/resources/montagne.bmp and b/resources/montagne.bmp differ
diff --git a/resources/quitter.bmp b/resources/quitter.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..a7e3252ff075c070eeb79f7bc9ec3810450bcadb
Binary files /dev/null and b/resources/quitter.bmp differ
diff --git a/src/SDL.c b/src/SDL.c
index 07a4eb5e430c4166346257de7ff7b50b6a4e88cf..4c30a8f7038bb0a78846b5e9f4dbb3162825b2a4 100644
--- a/src/SDL.c
+++ b/src/SDL.c
@@ -16,9 +16,9 @@
 */
 
 
-int main_SDL()
+int main_SDL(char* Map)
 {
-    int i,j;
+    int i,j,affichermenu;
     SDL_Surface* ecran=NULL;
     SDL_Event event;
     SDL_Surface* guerrier=NULL;
@@ -30,13 +30,18 @@ int main_SDL()
     SDL_Surface* eau=NULL;
     SDL_Surface* montagne=NULL;
     SDL_Surface* foret=NULL;
+    SDL_Surface* bouton_continuer=NULL;
+    SDL_Surface* bouton_quitter=NULL;
     SDL_Surface* Case_brillante=NULL;
     SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE];
     SDL_Rect Position_Perso[NB_PERSO];
     SDL_Rect Position_Case_brillante;
+    SDL_Rect pos_bouton_continuer;
+    SDL_Rect pos_bouton_quitter;
     int x_case_brillante;
     int y_case_brillante;
     int quitter=0;
+    affichermenu=0;
 
     if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
     {
@@ -53,6 +58,11 @@ int main_SDL()
 
     SDL_WM_SetCaption("Elder Internal Ignition",NULL);
 
+    pos_bouton_quitter.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_continuer.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_quitter.y=(HAUTEUR_CARTE*HAUTEUR_CASE-HAUTEUR_BOUTON)/2+HAUTEUR_BOUTON;
+    pos_bouton_continuer.y=(HAUTEUR_CARTE*HAUTEUR_CASE-HAUTEUR_BOUTON)/2-HAUTEUR_BOUTON;
+
     guerrier = SDL_LoadBMP("../resources/guerrier.bmp");
     if (!guerrier)
     {
@@ -61,6 +71,20 @@ int main_SDL()
     }
     SDL_SetColorKey(guerrier, SDL_SRCCOLORKEY, SDL_MapRGB(guerrier->format, 0, 0, 255));
 
+    bouton_continuer = SDL_LoadBMP("../resources/continuer.bmp");
+    if (!bouton_continuer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    bouton_quitter = SDL_LoadBMP("../resources/quitter.bmp");
+    if (!bouton_continuer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
     mage = SDL_LoadBMP("../resources/mage.bmp");
     if (!mage)
     {
@@ -156,33 +180,62 @@ int main_SDL()
     while(quitter==0)
     {
         SDL_WaitEvent(&event);
-        switch(event.type) /* Test du type d'événement */
-        {
-            case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
-                quitter=1;
-                break;
-            case SDL_MOUSEBUTTONDOWN:
-                deplacement_personnage(event.button.x,event.button.y);
+        if(affichermenu==1){
+            switch(event.type) /* Test du type d'événement */
+            {
+                case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                    quitter=1;
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    if(pos_bouton_continuer.x<event.button.x&&event.button.x<pos_bouton_continuer.x+LARGEUR_BOUTON){
+                        if(pos_bouton_continuer.y<event.button.y&&event.button.y<pos_bouton_continuer.x+HAUTEUR_BOUTON){
+                            affichermenu=0;
+                        }
+                        if(pos_bouton_quitter.y<event.button.y&&event.button.y<pos_bouton_quitter.x+HAUTEUR_BOUTON){
+                            quitter=1;
+                        }
+                    }
+                    break;
+                case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                    switch(event.key.keysym.sym){
+                        case SDLK_ESCAPE:
+                            affichermenu=0;
+                            break;
+                        default:
+                            quitter=0;
+                    }
                 break;
-            case SDL_MOUSEMOTION:
-                if(event.motion.x<LARGEUR_CARTE*LARGEUR_CASE&&event.motion.y<HAUTEUR_CARTE*HAUTEUR_CASE)
-                {
-                    x_case_brillante = get_position_case_x(deplacement_brillance(event.motion.x,event.motion.y));
-                    y_case_brillante = get_position_case_y(deplacement_brillance(event.motion.x,event.motion.y));
-                }
+            }
+        }
+        else{
+            switch(event.type) /* Test du type d'événement */
+            {
+                case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
+                    quitter=1;
+                    break;
+                case SDL_MOUSEBUTTONDOWN:
+                    deplacement_personnage(event.button.x,event.button.y);
+                    break;
+                case SDL_MOUSEMOTION:
+                    if(event.motion.x<LARGEUR_CARTE*LARGEUR_CASE&&event.motion.y<HAUTEUR_CARTE*HAUTEUR_CASE)
+                    {
+                        x_case_brillante = get_position_case_x(deplacement_brillance(event.motion.x,event.motion.y));
+                        y_case_brillante = get_position_case_y(deplacement_brillance(event.motion.x,event.motion.y));
+                    }
+                    break;
+                case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
+                    switch(event.key.keysym.sym){
+                        case SDLK_n:
+                            persosuivant();
+                            break;
+                        case SDLK_ESCAPE:
+                            affichermenu=1;
+                            break;
+                        default:
+                            quitter=0;
+                    }
                 break;
-            case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
-                switch(event.key.keysym.sym){
-                    case SDLK_n:
-                        persosuivant();
-                        break;
-                    case SDLK_ESCAPE:
-                        quitter=1;
-                        break;
-                    default:
-                        quitter=0;
-                }
-             break;
+            }
         }
         for(i=0;i<NB_PERSO;i++){
             Position_Perso[i].x=get_position_perso_x(i);
@@ -191,15 +244,37 @@ int main_SDL()
         Position_Case_brillante.x=x_case_brillante;
         Position_Case_brillante.y=y_case_brillante;
         SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
-        for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
-        {
-            SDL_BlitSurface(plaine,NULL,ecran,&Position_Case[i]);
-        }
-        SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);
-        for(i=0;i<NB_PERSO;i++)
+        if(affichermenu==0)
         {
-            SDL_BlitSurface(guerrier,NULL,ecran,&Position_Perso[i]);
+           for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
+            {
+                switch(Map[i])
+                {
+                    case 80: //"P" en ASCII
+                        SDL_BlitSurface(plaine,NULL,ecran,&Position_Case[i]);
+                        break;
+                    case 70: //"F" en ASCII
+                        SDL_BlitSurface(foret,NULL,ecran,&Position_Case[i]);
+                        break;
+                    case 69: //"E" en ASCII
+                        SDL_BlitSurface(eau,NULL,ecran,&Position_Case[i]);
+                        break;
+                    case 77: //"M" en ASCII
+                        SDL_BlitSurface(montagne,NULL,ecran,&Position_Case[i]);
+                        break;
+                }
+
+            }
+            SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);
+            for(i=0;i<NB_PERSO;i++)
+            {
+                SDL_BlitSurface(guerrier,NULL,ecran,&Position_Perso[i]);
+            }
+        }else{
+            SDL_BlitSurface(bouton_continuer,NULL,ecran,&pos_bouton_continuer);
+            SDL_BlitSurface(bouton_quitter,NULL,ecran,&pos_bouton_quitter);
         }
+
         SDL_Flip(ecran);
     }
     quitter=0;
diff --git a/src/SDL.h b/src/SDL.h
index efc34f953da2cafaa6f1886bf00642fdad52853c..482dc8c364be81e96a553fb264e0af9fe2223ab2 100644
--- a/src/SDL.h
+++ b/src/SDL.h
@@ -12,8 +12,10 @@
 #define LARGEUR_CASE 53
 #define HAUTEUR_CASE 71
 #define NB_PERSO 3
+#define HAUTEUR_BOUTON 20
+#define LARGEUR_BOUTON 115
 
-int main_SDL();
+int main_SDL(char* Map);
 
 
 #endif
diff --git a/src/carte.c b/src/carte.c
index b72e5b8a37625ee34f13e5aa6c77ddb8eaa6d6d7..377658d3649fdda105b192312871cd025d3c181f 100644
--- a/src/carte.c
+++ b/src/carte.c
@@ -10,6 +10,12 @@
 */
 
 
+char* ExtraireCarte(int numero)
+{
+    return LireCarte("../resources/Maps.txt",numero);
+}
+
+
 /*!
  * \fn Carte* LireCarte(int num)
  * \brief La fonction recupere la n-ieme carte dans un fichier et renvoie un pointeur sur la carte cree
@@ -18,51 +24,58 @@
  */
 char* LireCarte(const char *filename, int num)
 {
-    char char_num_map[2],char_nb_lignes[2]="",char_nb_colonnes[2]="";
-    int num_map = 0, nb_lignes = 0, nb_colonnes = 0, i=0, j=0, k=0;
+    char char_num_map[1],char_nb_lignes[2]="",char_nb_colonnes[2]="";
+    char char_actuel;
+    int num_map = 0, nb_lignes = 0, nb_colonnes = 0, i=0, j=0, k=0, taille_Tableau = 0;
     FILE* file_map = NULL;
     file_map = fopen(filename, "r");
 
     fseek(file_map, 3, SEEK_SET);
-    (fgets(char_num_map,3,file_map));
-    num_map = atoi(char_num_map);
-    (fgets(char_nb_lignes,3,file_map));
-    nb_lignes = atoi(char_nb_lignes);
-    fseek(file_map, 1, SEEK_CUR);
-    (fgets(char_nb_colonnes,3,file_map));
-    nb_colonnes = atoi(char_nb_colonnes);
-
-    while(num_map < num)
+    fscanf(file_map,"%d %d %d", &num_map, &nb_lignes, &nb_colonnes); /*! Lecture du nom et de la taille de la premiere map */
+
+    fgetc(file_map);
+    fgetc(file_map);
+
+    while(num_map < num)    /*! Descend jusqu'à la prochaine map */
     {
-        for(k=0; k<nb_colonnes+4; k++) /*! Descend jusqu'à la prochaine map */
+        for(k=0; k<nb_colonnes; k++) /*! Descend jusqu'à la prochaine map */
         {
-            fseek(file_map,nb_lignes,SEEK_CUR);
+            fseek(file_map,nb_lignes+2,SEEK_CUR);
         }
+        fgetc(file_map);
+        fgetc(file_map);
         fseek(file_map, 3, SEEK_CUR);
-        (fgets(char_num_map,3,file_map));
-        num_map = atoi(char_num_map);
-        (fgets(char_nb_lignes,3,file_map));
-        nb_lignes = atoi(char_nb_lignes);
-        fseek(file_map, 1, SEEK_CUR);
-        (fgets(char_nb_colonnes,3,file_map));
-        nb_colonnes = atoi(char_nb_colonnes);
-    }
 
-    fseek(file_map, 4, SEEK_CUR);
+        fscanf(file_map,"%d %d %d", &num_map, &nb_lignes, &nb_colonnes);  /*! Lecture du nom et de la taille de la map */
+        fgetc(file_map);
+        fgetc(file_map);
+    }
 
     char * TableauCarte = NULL;
-    TableauCarte = malloc(nb_colonnes * nb_lignes * sizeof(char));
+    taille_Tableau = nb_colonnes*nb_lignes*sizeof(char);
+    TableauCarte = malloc(taille_Tableau);
 
     for(i=0; i<nb_colonnes; i++)
     {
-        for(j=0; j<=nb_lignes; j++)
+        for(j=0; j<nb_lignes; j++)
         {
-            TableauCarte[nb_lignes*i+j]=fgetc(file_map);
+            char_actuel = fgetc(file_map);
+            TableauCarte[nb_lignes*i+j] = char_actuel;
         }
+        fgetc(file_map);
+    }
+
+/* Test Tableau
+
+    for(j=0; j<nb_lignes*nb_colonnes; j++)
+    {
+        printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]);
     }
 
     fclose(file_map);
+*/
     return TableauCarte;
 }
 
 
+
diff --git a/src/carte.h b/src/carte.h
index bc58c4cff4271ba2adf70c07cc06708b09a0e922..abbe315a3df089a09fe7660b8c072a768175785d 100644
--- a/src/carte.h
+++ b/src/carte.h
@@ -3,6 +3,8 @@
 * \brief Fichier contenant les signatures des fonctions liees a la structure carte.
 */
 
+char* ExtraireCarte(int numero);
+
 char* LireCarte(const char *filename, int num);
 
 #ifndef CARTE_H_INCLUDED
diff --git a/src/main.c b/src/main.c
index 11dacdda2e37458376a2adbaf6bd2bab135c42b3..ebc090fb6010ce8596452bea24f5fb8cd56c5291 100644
--- a/src/main.c
+++ b/src/main.c
@@ -10,7 +10,6 @@
 
 int init_jeu(const char *filename){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */
    FILE *fichier_init;
-
    fichier_init=fopen(filename,"r");
     if (!fichier_init==NULL)
     {
@@ -45,6 +44,15 @@ int init_jeu(const char *filename){ /* cr
                 strcat(fichier_text, fichier_temp);
                 Librairie_Terrains(fichier_text);
             }
+            if(strcmp(nom,"Cartes")==0)
+            {
+                char fichier_text[50];
+                char fichier_temp[50];
+                strcpy(fichier_text,"../resources/");
+                strcpy(fichier_temp,roxml_get_content(roxml_get_attr(config_actuelle, "fichier", 0), NULL, 0, NULL));
+                strcat(fichier_text, fichier_temp);
+                char *Map_B = ExtraireCarte(2);
+            }
             if(strcmp(nom,"Competences")==0)
             {
                 /* Initialisation des compétences à venir */
@@ -58,7 +66,7 @@ int init_jeu(const char *filename){ /* cr
         fprintf(stderr,"Erreur dans l'ouverture du fichier");
         return 1;
     }
-
+    return 0;
 }
 
 
@@ -67,18 +75,15 @@ int init_jeu(const char *filename){ /* cr
 int main()
 {
 
-
 init_jeu("../resources/Init_jeu.xml");
 
 
-main_SDL();
-
-printf("La case choisie est : %c\n",LireCarte("../resources/Maps.txt",3)[10]);
-
+char *Map_A = ExtraireCarte(4);
 
+printf("Map en version texte : %s\n", Map_A);
 
-main_SDL();
 
+main_SDL(Map_A);
 
 
 return 0;