diff --git a/src/affichage.c b/src/affichage.c
index a949e39b6a2634373162d646ab800c991f73daa3..3b465d6fa23b862d450cafd5dc5fb16e26c7fa7d 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -15,6 +15,7 @@
 EtatsJeu etat;
 char* nom_1;
 char* nom_2;
+int num_carte_selectionnee;
 
 
 /*!
@@ -54,8 +55,8 @@ int main_affichage()
                 affichage_menu_configuration();
                 break;
             case TOUR_J1P1:
-                printf("et la normalement ca affiche la carte");
-                affichage_carte(NULL);
+                printf(obtenirLignesCarte(num_carte_selectionnee)[0]);
+                affichage_carte(obtenirLignesCarte(num_carte_selectionnee));
                 break;
             default:
                 break;
@@ -450,6 +451,7 @@ int affichage_menu_configuration()
                     {
                         c=i;
                         selectionnerCarte(obtenirNomsCartes()[c]);
+                        num_carte_selectionnee=c+1;
                     }
                 }
                 if(event.button.x>posTextes[0].x&&event.button.x<posTextes[0].x+textes[0]->w)
@@ -526,19 +528,19 @@ int affichage_menu_configuration()
 
 
 /*!
- * \fn int affichage_carte(char* Map)
+ * \fn int affichage_carte(char** Map)
  * \brief fonction qui gère l'affichage pendant la partie
  *
  * \param la carte au format texte (une lettre = une case)
  */
 
-int affichage_carte(char* Map)
-{/*
+int affichage_carte(char ** Map)
+{
     int i,j=0;
     int nombre_classes=nbClasses();
-    int nombre_terrains=nbTerrains();
+    int nombre_terrains=4; //a changer
     SDL_Event event;
-    SDL_Surface* ecran=NULL;
+    SDL_Surface* ecran=SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);;
     SDL_Surface* classes[nombre_classes];
     SDL_Surface* terrains[nombre_terrains];
     SDL_Surface* persos[NB_PERSO*NB_JOUEURS];
@@ -549,7 +551,7 @@ int affichage_carte(char* Map)
     SDL_Rect Position_Case_brillante;
     SDL_Rect Position_Guerrier_select;
 
-    for(i=0;i<nbClasses();i++){
+    for(i=0;i<nombre_classes;i++){
         classes[i]=SDL_LoadBMP(obtenirSkinsClasses()[i]);
         if (!classes[i])
         {
@@ -558,7 +560,15 @@ int affichage_carte(char* Map)
         }
         SDL_SetColorKey(classes[i], SDL_SRCCOLORKEY, SDL_MapRGB(classes[i]->format, 0, 0, 255));
     }
-
+    for(i=0;i<nombre_terrains;i++){
+        terrains[i]=SDL_LoadBMP(obtenirSkinsTerrains()[i]);
+        if (!terrains[i])
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+        SDL_SetColorKey(terrains[i], SDL_SRCCOLORKEY, SDL_MapRGB(terrains[i]->format, 0, 0, 255));
+    }
     Guerrier_select = SDL_LoadBMP("../resources/Skins/guerrier_select.bmp");
                     if (!Guerrier_select)
                     {
@@ -596,9 +606,9 @@ int affichage_carte(char* Map)
     {
         SDL_WaitEvent(&event);
             switch(event.type) /* Test du type d'événement */
-/*            {
+           {
                 case SDL_QUIT: /* Si c'est un événement de type "Quitter" */
-  /*                  etat=FERMER;
+                    etat=FERMER;
                     break;
                 case SDL_MOUSEBUTTONDOWN:
                     deplacement_personnage(event.button.x,event.button.y);
@@ -611,7 +621,7 @@ int affichage_carte(char* Map)
                     }
                     break;
                 case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */
-    /*               switch(event.key.keysym.sym){
+                    switch(event.key.keysym.sym){
                         case SDLK_n:
                             persosuivant();
                             break;
@@ -623,40 +633,52 @@ int affichage_carte(char* Map)
                     }
                 break;
             }
-        for(i=0;i<NB_PERSO;i++){
+        /*for(i=0;i<NB_PERSO;i++){
             Position_Perso[i].x=get_position_perso_x(i);
             Position_Perso[i].y=get_position_perso_y(i);
         }
         Position_Guerrier_select.x = get_position_case_x(&Position_Perso[persoactuel()]);
         Position_Guerrier_select.y = get_position_case_y(&Position_Perso[persoactuel()]);
-
+    */
         SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
-           for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
-            {
-                switch(Map[i])
+        for(i=0;i<HAUTEUR_CARTE;i++)
+        {
+            printf(Map[i]);
+            for(j=0;j<LARGEUR_CARTE;j++)
                 {
-                    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;
-                    default:
-                        break;
+                    switch(Map[i][j])
+                    {
+                        case 80: //"P" en ASCII
+                            printf("test1 \n");
+                            SDL_BlitSurface(terrains[0],NULL,ecran,&Position_Case[i]);
+                            printf("test \n");
+                            break;
+                        case 70: //"F" en ASCII
+                            printf("test1 \n");
+                            SDL_BlitSurface(terrains[1],NULL,ecran,&Position_Case[i]);
+                            printf("test \n");
+                            break;
+                        case 82: //"R" en ASCII
+                            printf("test1 \n");
+                            SDL_BlitSurface(terrains[2],NULL,ecran,&Position_Case[i]);
+                            printf("test \n");
+                            break;
+                        case 77: //"M" en ASCII
+                            printf("test1 \n");
+                            SDL_BlitSurface(terrains[3],NULL,ecran,&Position_Case[i]);
+                            printf("test \n");
+                            break;
+                        default:
+                            break;
+                    }
                 }
             }
            for(i=0;i<NB_PERSO*NB_JOUEURS;i++)
            {
                 //TODO
            }
-            SDL_BlitSurface(Guerrier_select,NULL,ecran,&Position_Guerrier_select);
-            SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);
+            /*SDL_BlitSurface(Guerrier_select,NULL,ecran,&Position_Guerrier_select);
+            SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);*/
 
         }
         SDL_Flip(ecran);
diff --git a/src/affichage.h b/src/affichage.h
index 47c29a8a9fd0a46c3b47de352e02c30c81b13cd2..0eb9c74b6812d0464c3a47c564f536557d17ec40 100644
--- a/src/affichage.h
+++ b/src/affichage.h
@@ -24,7 +24,7 @@ int affichage_menu_configuration();
 
 int affichage_ecran_accueil();
 
-int affichage_carte(char* Map);
+int affichage_carte(char** Map);
 
 int afficher_menu();
 
diff --git a/src/controleur.c b/src/controleur.c
index 07b8e0b71583d38a402a33a27edd874f5b44f5ff..1941b8cdc3605b80dcbeeae2cb28ab2c46d3d8eb 100644
--- a/src/controleur.c
+++ b/src/controleur.c
@@ -109,6 +109,20 @@ void initJeu(){
     return tabSkinsClasses;
  }
 
+ char ** obtenirSkinsTerrains(){
+    int i;
+    //Allocation du tableau contenant les chaines de charactères
+    char ** tabSkinsTerrains = malloc((getNbTerrains(packGlobal))*sizeof(char *));
+    for(i=0;i<getNbTerrains(packGlobal);i++){
+        tabSkinsTerrains[i]= malloc(TAILLE_CHEMIN*sizeof(char));
+    }
+        //Copie des chemin des skins dans le tableau
+    for(i=0;i<getNbTerrains(packGlobal);i++){
+        strncpy(tabSkinsTerrains[i],packGlobal.Terrains_Package[i].skin_default, TAILLE_CHEMIN);
+    }
+    return tabSkinsTerrains;
+ }
+
    /*!
  * \fn void freeClasses()
  * \brief La fonction libère un tableau de chaines de charactères alloué pour stocker les informations sur les classes.
@@ -155,6 +169,18 @@ char ** obtenirNomsCartes(){
     return tabNomsCartes;
 }
 
+
+  /*!
+ * \fn char ** obtenirLignesCarte(int numCarte)
+ * \brief Fonction renvoyant le tableau des lignes de la carte numéro numCarte
+ *
+ * \return un tableau de chaine de charactères (char**).
+ */
+char ** obtenirLignesCarte(int numCarte){
+    return packGlobal.Cartes_Package[numCarte-1].lignes;
+}
+
+
   /*!
  * \fn char ** obtenirDescriptionCarte()
  * \brief Fonction renvoyant un tableau de chaine de caractères contenant les descriptions des Cartes.
diff --git a/src/controleur.h b/src/controleur.h
index 308acd0efa316f3a41ba34fb6b0d3c2dea0a1b79..23fb5d4a0cc8e6652dcd01c59d0a5c11a66d8a64 100644
--- a/src/controleur.h
+++ b/src/controleur.h
@@ -10,6 +10,9 @@
 
 void initJeu();
 
+ char ** obtenirSkinsTerrains();
+ char ** obtenirLignesCarte(int numCarte);
+
 void ajouterUnJoueur(char * nomDuJoueur, EtatsJeu * etat);
 
 int nbClasses();
diff --git a/src/gamePackage.c b/src/gamePackage.c
index 1605f3ecc3b9e760acc4ce5da193241e552d13c5..e9f90bdfbf3d625a8ec69710ef9140a5a04e08aa 100644
--- a/src/gamePackage.c
+++ b/src/gamePackage.c
@@ -25,6 +25,7 @@ Game_Package Construire_Package()
     Pack.nbClasses = getNbElements("../resources/Classes.xml");
 
     Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml");
+    Pack.nbTerrains=getNbElements("../resources/Terrains.xml");
 
     Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml");
 
@@ -78,3 +79,6 @@ int getNbCartes(Game_Package pack){
     return pack.nbCartes;
 }
 
+int getNbTerrains(Game_Package pack){
+    return pack.nbTerrains;
+}
diff --git a/src/gamePackage.h b/src/gamePackage.h
index 2017b3a11cb9f9a92542aba97533c6d188087ce4..d863e1a2fcb0a00496ed6e2101f831234aa52dd9 100644
--- a/src/gamePackage.h
+++ b/src/gamePackage.h
@@ -12,7 +12,7 @@ int getNbElements(char * file);
 
 int getNbClasses(Game_Package pack);
 int getNbCartes(Game_Package pack);
-
+int getNbTerrains(Game_Package pack);
 #endif // GAME_PACKAGE_INCLUDED
 
 
diff --git a/src/structures.h b/src/structures.h
index e5154c023757f5e4e85b05056e6990cf108cd92a..02a3cc034d6a369d5a29931bd737b5ecaeafbd26 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -233,6 +233,7 @@ typedef struct Carte_A{
 typedef struct Game_Package{
     int nbCartes;
     int nbClasses;
+    int nbTerrains;
     Classe* Classes_Package;
     Terrain* Terrains_Package;
     Skins_GUI* GUI_Package;