diff --git a/ElderInternalIgnition/SDL_lena_pour_henry.c b/ElderInternalIgnition/SDL_lena_pour_henry.c
new file mode 100644
index 0000000000000000000000000000000000000000..f089dddf3c1a5bc33eb1c69bb5b8c69ee1b95937
--- /dev/null
+++ b/ElderInternalIgnition/SDL_lena_pour_henry.c
@@ -0,0 +1,373 @@
+#include <stdlib.h>
+#include <SDL/SDL.h>
+#include "structures.h"
+#include "partie.h"
+#include "joueur.h"
+#include "joueurList.h"
+#include "personnage.h"
+#include "case.h"
+#include "deplacements.h"
+#include "SDL.h"
+#include "controleurSDL.h"
+
+
+/*!
+* \file SDL.c
+* \brief Fichier contenant le code des fonctions liees à l'affichage par la SDL.
+*/
+
+/*!
+ * \fn int main_SDL(char* Map)
+ * \brief fonction qui gère l'affichage
+ *
+ * \param la carte au format texte (une lettre = une case)
+ */
+
+int main_SDL(char* Map)
+{
+    int i,j,affichermenu;
+    SDL_Surface* ecran=NULL;
+    SDL_Event event;
+    SDL_Surface* guerrier=NULL;
+    SDL_Surface* mage=NULL;
+    SDL_Surface* voleur=NULL;
+    SDL_Surface* archer=NULL;
+    SDL_Surface* guerisseur=NULL;
+    SDL_Surface* plaine=NULL;
+    SDL_Surface* eau=NULL;
+    SDL_Surface* montagne=NULL;
+    SDL_Surface* foret=NULL;
+    SDL_Surface* bouton_entrer_royaume=NULL;
+    SDL_Surface* bouton_continuer=NULL;
+    SDL_Surface* bouton_quitter=NULL;
+    SDL_Surface* Case_brillante=NULL;
+    SDL_Surface* Guerrier_select=NULL;
+    SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE];
+    SDL_Rect Position_Perso[NB_PERSO];
+    SDL_Rect Position_Case_brillante;
+    SDL_Rect Position_Guerrier_select;
+    SDL_Rect pos_bouton_entrer_royaume;
+    SDL_Rect pos_bouton_continuer;
+    SDL_Rect pos_bouton_quitter;
+    int x_case_brillante;
+    int y_case_brillante;
+    int x_guerrier_select;
+    int y_guerrier_select;
+    int quitter=0;
+    affichermenu=0;
+    typedef enum{Accueil,Jeu}etat;
+    int Etat = Accueil;
+
+    if ( SDL_Init( SDL_INIT_VIDEO ) < 0 )
+    {
+        printf( "Unable to init SDL: %s\n", SDL_GetError() );
+        return 1;
+    }
+
+    ecran = SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
+    if (ecran == NULL) // Si l'ouverture a échoué, on le note et on arrête
+    {
+        fprintf(stderr, "Impossible de charger le mode vidéo : %s\n", SDL_GetError());
+        exit(EXIT_FAILURE);
+    }
+
+    SDL_WM_SetCaption("Elder Internal Ignition",NULL);
+
+    pos_bouton_entrer_royaume.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_quitter.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_continuer.x=(LARGEUR_CARTE*LARGEUR_CASE-LARGEUR_BOUTON)/2;
+    pos_bouton_entrer_royaume.y=(HAUTEUR_CARTE*HAUTEUR_CASE-HAUTEUR_BOUTON)/2+HAUTEUR_BOUTON;
+    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/Skins/guerrier.bmp");
+    if (!guerrier)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(guerrier, SDL_SRCCOLORKEY, SDL_MapRGB(guerrier->format, 0, 0, 255));
+
+    bouton_entrer_royaume = SDL_LoadBMP("../resources/Skins/Entrer_Royaume.bmp");
+    if (!bouton_entrer_royaume)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    bouton_continuer = SDL_LoadBMP("../resources/Skins/continuer.bmp");
+    if (!bouton_continuer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    bouton_quitter = SDL_LoadBMP("../resources/Skins/quitter.bmp");
+    if (!bouton_continuer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+
+    mage = SDL_LoadBMP("../resources/Skins/mage.bmp");
+    if (!mage)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(mage, SDL_SRCCOLORKEY, SDL_MapRGB(mage->format, 0, 0, 255));
+
+    voleur = SDL_LoadBMP("../resources/Skins/voleur.bmp");
+    if (!voleur)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(voleur, SDL_SRCCOLORKEY, SDL_MapRGB(voleur->format, 0, 0, 255));
+
+
+    archer = SDL_LoadBMP("../resources/Skins/archer.bmp");
+    if (!archer)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(archer, SDL_SRCCOLORKEY, SDL_MapRGB(archer->format, 0, 0, 255));
+
+    guerisseur = SDL_LoadBMP("../resources/Skins/guerisseur.bmp");
+    if (!guerisseur)
+    {
+        printf("Unable to load bitmap: %s\n", SDL_GetError());
+        return 1;
+    }
+    SDL_SetColorKey(guerisseur, SDL_SRCCOLORKEY, SDL_MapRGB(guerisseur->format, 0, 0, 255));
+
+    plaine = SDL_LoadBMP("../resources/Skins/plaine.bmp");
+    if (!plaine)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(plaine, SDL_SRCCOLORKEY, SDL_MapRGB(plaine->format, 0, 0, 255));
+
+    eau = SDL_LoadBMP("../resources/Skins/eau.bmp");
+    if (!eau)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(eau, SDL_SRCCOLORKEY, SDL_MapRGB(eau->format, 0, 0, 255));
+
+    montagne = SDL_LoadBMP("../resources/Skins/montagne.bmp");
+    if (!montagne)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(montagne, SDL_SRCCOLORKEY, SDL_MapRGB(montagne->format, 0, 0, 255));
+
+    foret = SDL_LoadBMP("../resources/Skins/foret.bmp");
+    if (!foret)
+        {
+            printf("Unable to load bitmap: %s\n", SDL_GetError());
+            return 1;
+        }
+    SDL_SetColorKey(foret, SDL_SRCCOLORKEY, SDL_MapRGB(foret->format, 0, 0, 255));
+
+    Case_brillante = SDL_LoadBMP("../resources/Skins/case_brillante.bmp");
+                    if (!Case_brillante)
+                    {
+                        printf("Unable to load bitmap: %s\n", SDL_GetError());
+                        return 1;
+                    }
+    SDL_SetColorKey(Case_brillante, SDL_SRCCOLORKEY, SDL_MapRGB(Case_brillante->format, 0, 0, 255));
+
+    Guerrier_select = SDL_LoadBMP("../resources/Skins/guerrier_select.bmp");
+                    if (!Guerrier_select)
+                    {
+                        printf("Unable to load bitmap: %s\n", SDL_GetError());
+                        return 1;
+                    }
+    SDL_SetColorKey(Guerrier_select, SDL_SRCCOLORKEY, SDL_MapRGB(Guerrier_select->format, 0, 0, 255));
+
+    for(i=0;i<LARGEUR_CARTE;i+=2)
+    {
+        for(j=0;j<HAUTEUR_CARTE;j++)
+            {
+                Position_Case[j*LARGEUR_CARTE+i].x=LARGEUR_CASE*i;
+                Position_Case[j*LARGEUR_CARTE+i].y=HAUTEUR_CASE*j;
+            }
+    }
+    for(i=1;i<LARGEUR_CARTE;i+=2)
+    {
+        for(j=0;j<HAUTEUR_CARTE;j++)
+            {
+                Position_Case[j*LARGEUR_CARTE+i].x=LARGEUR_CASE*i;
+                Position_Case[j*LARGEUR_CARTE+i].y=HAUTEUR_CASE*j+(HAUTEUR_CASE/2);
+            }
+    }
+
+    init_controleur(Position_Case);
+
+    while(quitter==0)
+    {
+        switch(Etat){
+        case Accueil:
+        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:
+                    if(pos_bouton_entrer_royaume.y<event.button.y&&event.button.y<pos_bouton_entrer_royaume.y+LARGEUR_BOUTON){
+                        Etat = 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;
+            }
+        SDL_BlitSurface(bouton_entrer_royaume,NULL,ecran,&pos_bouton_entrer_royaume);
+        SDL_Flip(ecran);
+
+        break;
+        case Jeu:
+        SDL_WaitEvent(&event);
+        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;
+            }
+        }
+        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;
+            }
+        }
+
+        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_Case_brillante.x=x_case_brillante;
+        Position_Case_brillante.y=y_case_brillante;
+        x_guerrier_select = get_position_case_x(&Position_Perso[persoactuel()]);
+        y_guerrier_select = get_position_case_y(&Position_Perso[persoactuel()]);
+        Position_Guerrier_select.x=x_guerrier_select;
+        Position_Guerrier_select.y=y_guerrier_select;
+        SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
+        if(affichermenu==0)
+        {
+           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;
+                    default:
+                        quitter=0;
+                }
+
+            }
+            for(i=0;i<NB_PERSO;i++)
+            {
+                SDL_BlitSurface(guerrier,NULL,ecran,&Position_Perso[0]);
+                SDL_BlitSurface(mage,NULL,ecran,&Position_Perso[1]);
+                SDL_BlitSurface(archer,NULL,ecran,&Position_Perso[2]);
+            }
+            SDL_BlitSurface(Guerrier_select,NULL,ecran,&Position_Guerrier_select);
+            SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);
+        }else{
+            SDL_BlitSurface(bouton_continuer,NULL,ecran,&pos_bouton_continuer);
+            SDL_BlitSurface(bouton_quitter,NULL,ecran,&pos_bouton_quitter);
+        }
+
+        SDL_Flip(ecran);
+
+        break;
+
+        default:
+         break;
+    }
+    }
+    quitter=0;
+    SDL_FreeSurface(guerrier);
+    SDL_FreeSurface(Case_brillante);
+    SDL_FreeSurface(Guerrier_select);
+    SDL_FreeSurface(plaine);
+    SDL_FreeSurface(mage);
+    SDL_FreeSurface(voleur);
+    SDL_FreeSurface(archer);
+    SDL_FreeSurface(guerisseur);
+    SDL_FreeSurface(eau);
+    SDL_FreeSurface(montagne);
+    SDL_FreeSurface(foret);
+    SDL_Quit();
+    return 0;
+}
+
+
diff --git a/resources/Maps.xml b/resources/Maps.xml
new file mode 100644
index 0000000000000000000000000000000000000000..43b9e6ca855e1510141ef0784a92e2f7c01e408a
--- /dev/null
+++ b/resources/Maps.xml
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Maps>
+
+<Map id="MAP_1" name="Comté de la sieste" desc="Cette map est so-mmeil" taille_lignes="10">
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+<Line>MFPPRRPPFM</Line>
+</Map>
+
+<Map id="MAP_2" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10">
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+</Map>
+
+<Map id="MAP_3" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10">
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+  <Line>MFPPRRPPFM</Line>
+</Map>
+
+</Maps>
diff --git a/resources/Skins/Entrer_Royaume.bmp b/resources/Skins/Entrer_Royaume.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..e4c614dc2d7584e1edc4b7381bfddeaa12f1e5f9
Binary files /dev/null and b/resources/Skins/Entrer_Royaume.bmp differ
diff --git a/src/carte.c b/src/carte.c
index b1d683dbff21cbac10aef173f053ec4852b4d192..de2807d1cd131f3a95209420b21f102049661f63 100644
--- a/src/carte.c
+++ b/src/carte.c
@@ -2,6 +2,8 @@
 #include <stdlib.h>
 #include <string.h>
 #include "carte.h"
+#include "structures.h"
+#include <roxml.h>
 
 
 /*!
@@ -20,7 +22,7 @@ char* ExtraireCarte(int 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
  *
- * \return Un pointeur sur une tableau de lettres.
+ * \return Un pointeur sur une tableau de cartes.
  */
 char* LireCarte(const char *filename, int num)
 {
@@ -64,17 +66,85 @@ char* LireCarte(const char *filename, int num)
         fgetc(file_map);
     }
 
-/* Test Tableau
+    /* Test Tableau
 
-    for(j=0; j<nb_lignes*nb_colonnes; j++)
-    {
-        printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]);
-    }
+        for(j=0; j<nb_lignes*nb_colonnes; j++)
+        {
+            printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]);
+        }
 
-    fclose(file_map);
-*/
+        fclose(file_map);
+    */
     return TableauCarte;
 }
 
 
+Carte_A* ExtraireCartesXML(const char *filename)
+{
+    node_t *rootXML, *Maps;
+    int nb_Maps=0, i=0;
+    rootXML = roxml_load_doc(filename);
+    Maps = roxml_get_chld(rootXML, NULL, 0);
+
+    nb_Maps = roxml_get_chld_nb(Maps);
+    //printf("Il y a %d maps\n", nb_Maps);
+
+    Carte_A* Tableau_Cartes = malloc(nb_Maps * sizeof(Carte_A));
+
+    /*-------------------------------------------------------------------------------------------------------------------*/
+    /* Aquisition des cartes */
+    /*-------------------------------------------------------------------------------------------------------------------*/
+
+    for(i=0; i<nb_Maps; i++)
+    {
+        int j=0, nb_lignes=0, taille_lignes=0;
+        char *id_text, *name_text, *desc_text, *lignes_text;
+        node_t *Map_Actuelle;
+        Map_Actuelle = roxml_get_chld(Maps,NULL,i);
+
+        id_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "id", 0), NULL, 0, NULL);
+        name_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "name", 0), NULL, 0, NULL);
+        desc_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "desc", 0), NULL, 0, NULL);
+
+        //taille_lignes = atoi(roxml_get_content(roxml_get_attr(Map_Actuelle, "taille_lignes", 0), NULL, 0, NULL));
+        //printf("Les lignes font %d de long\n", taille_lignes);
+
+        //nb_lignes = roxml_get_chld_nb(Map_Actuelle);
+        //printf("La carte contient %d lignes\n", nb_lignes);
+
+        Carte_A Carte_Actuelle;
+
+        strcpy(Carte_Actuelle.id, id_text);
+        strcpy(Carte_Actuelle.nom, name_text);
+        strcpy(Carte_Actuelle.desc, desc_text);
+/*
+        printf("L'ID est :%s\n\n", Carte_Actuelle.id);
+        printf("Le nom est :%s\n\n", Carte_Actuelle.nom);
+        printf("La desc est :%s\n\n", Carte_Actuelle.desc);
+*/
+        /*--------------------------------------------------------------------------------------------------------------*/
+        /* Aquisition des lignes de la carte */
+        /*--------------------------------------------------------------------------------------------------------------*/
+
+        for(j=0; j<16 /*nb_lignes*/ ; j++)
+        {
+            node_t* Ligne_Actuelle;
+            Ligne_Actuelle = roxml_get_chld(Map_Actuelle, NULL, j);
+
+            char sequence_ligne[9];
+            roxml_get_content(Ligne_Actuelle, sequence_ligne, 50, NULL);
+
+            //printf("Sequence_Ligne vaut : %s\n", sequence_ligne);
+
+            strcpy(Carte_Actuelle.lignes[j], sequence_ligne);
+
+            //printf("La ligne %d vaut : %s\n",j+1, Carte_Actuelle.lignes[j]);
+        }
+
+        Tableau_Cartes[i] = Carte_Actuelle;
+    }
+
+    return Tableau_Cartes;
+}
+
 
diff --git a/src/carte.h b/src/carte.h
index abbe315a3df089a09fe7660b8c072a768175785d..46b24768fb8138f71ef3e539d04afe58e0357dcb 100644
--- a/src/carte.h
+++ b/src/carte.h
@@ -3,15 +3,17 @@
 * \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
 #define CARTE_H_INCLUDED
 
 #include "structures.h"
 
+char* ExtraireCarte(int numero);
+
+Carte_A* ExtraireCartesXML(const char *filename);
+
+char* LireCarte(const char *filename, int num);
+
 
 
 #endif // CARTE_H_INCLUDED
diff --git a/src/case.c b/src/case.c
index 19c89fbf60381e974526d835ce07e3dbfe5e92ad..018494f4379d8b96cd89d1c023ba711fe90261cc 100644
--- a/src/case.c
+++ b/src/case.c
@@ -10,13 +10,12 @@
 * \brief Fichier contenant le code des fonctions liees aux cases
 */
 
-
-Case * init_case(Case * c,int x, int y, Terrain *t){
+void init_case(Case * c,int x,int y, Terrain *t){
     c->coord_x=x;
     c->coord_y=y;
     c->terrain=t;
     c->occupee=faux;
-    return c;
+    printf("size of Case : %d\nadresse x : %d\nadresse y : %d\nadresse terrain : %d \nadresse occupee : %d\n",sizeof(*c),&c->coord_x, &c->coord_y,&c->terrain,&c->occupee);
 }
 
 int get_x(Case *c){
@@ -36,34 +35,58 @@ boolean case_franchissable(Case *c){
 }
 
 void marquer_occupee(Case *c){
-    if (c->occupee==vrai) printf("case déjà occupée");
     c->occupee=vrai;
 }
 
 void marquer_libre(Case *c){
-    if (c->occupee==faux) printf("case déjà libre");
     c->occupee=faux;
 }
 
 Terrain* get_terrain(Case *c){
     if (c->terrain==NULL){
-        fprintf(stderr,"pas de terrain");
+        return NULL;
     }
     return c->terrain;
 }
 
-int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur){
+  /*!
+ * \fn Carte * nouvelleCarte()
+ * \brief La fonction alloue l'espace en memoire pour une structure Carte et renvoye un pointeur vers la structure creee
+ *
+ * \return Le pointeur vers la Carte creee.
+ */
+Carte * nouvelleCarte(){
+    Carte * c = malloc(sizeof(Carte));
+    return c;
+}
+
+  /*!
+ * \fn void deleteCarte(Carte * c)
+ * \brief libere l'espace memoire alloue a une Carte
+ *
+ * \param le pointeur vers la Carte a supprimer.
+ */
+void deleteCarte(Carte * c){
+    free(c);
+}
+
+  /*!
+ * \fn init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur)
+ * \brief La fonction initialise la position des Case contenues dans la Carte et les definit comme libres.
+ *        l'attribut Terrain de la Carte est initialisé a NULL, il doit etre change a partir d'une autre fonction.
+ *
+ * \param Un pointeur vers la Carte a initialiser, des entiers representant la largeur et la hauteur de la carte.
+ * \return 0 si la Carte n'a pas ete correctement initialisee (si la taille maximum de la carte est depassee), 1 sinon.
+ */
+int init_carte(Carte * c){
     int i,j,n;
-    n=0;
-    if (largeur*hauteur>TAILLE_MAX_CARTE){
-        printf("erreur : taille maximum de la carte dépassée");
-        return 1;
-    }
-    for (i=0;i<(largeur);i++){
-        for (j=0;j<(hauteur);j++){
-            init_case(c[n],i,j,NULL);
-            n++;
+    n=c;
+    for (i=0;i<LARG_MAX_CARTE;i++){
+        for (j=0;j<HAUT_MAX_CARTE;j++){
+            init_case(n,i,j,NULL);
+            printf("Adresse Case : %d, x=%d, y=%d\n\n",n,get_x(n),get_y(n));
+            n=n+sizeof(Case);
         }
     }
-    return 0;
+    return 1;
 }
diff --git a/src/case.h b/src/case.h
index 50035c9e020141c710d3e3edb53a71db4ab9827f..009684164b50155add042f5e9bdcf892f5343f68 100644
--- a/src/case.h
+++ b/src/case.h
@@ -14,7 +14,7 @@ Case* Librairie_Cases(const char *filename);
 
 Case* Remplir_Cases_log(const char *filename);
 
-Case* init_case(Case *c,int x, int y, Terrain *t);
+void init_case(Case *c,int x, int y, Terrain *t);
 
 int get_x(Case *c);
 
@@ -34,7 +34,11 @@ void marquer_libre(Case *c);
 
 Terrain* get_terrain(Case *c);
 
-int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur);
+Carte * nouvelleCarte();
+
+void deleteCarte(Carte * c);
+
+int init_carte(Carte* c);
 
 /*Case * trouverCase(Carte * c, int x, int y);*/
 
diff --git a/src/main.c b/src/main.c
index 59bbbdfcc4e57644d69a27fde6f12701f52cab2e..ede47ba483eaf2ac6ae489a577eb64af461abc59 100644
--- a/src/main.c
+++ b/src/main.c
@@ -9,9 +9,18 @@
 #include "carte.h"
 #include "Interface.h"
 
-int init_jeu(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");
+
+/*!
+ * \fn int init_jeu(char *filename)
+ * \brief Fonction d'initialisation du jeu
+ *
+ * \param Le fichier d'initialisation
+ * \return un entier
+ */
+int init_jeu(char *filename)
+{
+    FILE *fichier_init;
+    fichier_init=fopen(filename,"r");
     if (fichier_init!=NULL)
     {
         node_t *rootXML, *ConfigXML, *Classes, *Terrains;
@@ -63,7 +72,9 @@ int init_jeu(char *filename){ /* cr
 
         fclose(fichier_init);
 
-    }else{
+    }
+    else
+    {
         fprintf(stderr,"Erreur dans l'ouverture du fichier");
         return 1;
     }
@@ -71,6 +82,28 @@ int init_jeu(char *filename){ /* cr
 }
 
 
+/*!
+ * \fn Game_Package Construire_Package()
+ * \brief Fonction de construction d'un package contenant l'univers du jeu
+ *
+ * \return un Game_Package
+ */
+Game_Package Construire_Package()
+{
+    Game_Package Pack;
+
+    Classe* Classes_Pack = Librairie_Classes("../resources/Classes.xml");
+    Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml");
+    Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml");
+    Carte_A* Map_Pack = ExtraireCartesXML("../resources/Maps.xml");
+
+    Pack.Classes_Package = Classes_Pack;
+    Pack.Terrains_Package = Terrains_Pack;
+    Pack.GUI_Package = GUI_Pack;
+    Pack.Cartes_Package = Map_Pack;
+
+    return Pack;
+}
 
 
 int main()
@@ -78,16 +111,17 @@ int main()
 
 //init_jeu("../resources/Init_jeu.xml");
 
-char *Map_A = ExtraireCarte(4);
-printf("Map en version texte : %s\n", Map_A);
+    char *Map_ANCIENNE_VERSION = ExtraireCarte(4);
+    //printf("Map en version texte : %s\n", Map_A);
 
 
-/* -------------------------------------*/
-/* Creation d'un package de jeu */
-/* -------------------------------------*/
+    /* -------------------------------------*/
+    /* Creation du package : */
+    /* -------------------------------------*/
 
-Game_Package Pack_A;
+    Game_Package Pack_A = Construire_Package();
 
+<<<<<<< HEAD
 Classe* Classes_Pack = Librairie_Classes("../resources/Classes.xml");
 Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml");
 Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml");
@@ -96,8 +130,25 @@ Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml");
 Pack_A.Classes_Package = Classes_Pack;
 Pack_A.Terrains_Package = Terrains_Pack;
 Pack_A.GUI_Package = GUI_Pack;
+=======
+    /* -------------------------------------*/
+    /* Comment utiliser le package : */
+    /* -------------------------------------*/
+
+
+    printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[2].nom);
+
+    printf("Le nom du terrain 1 est : %s\n",Pack_A.Terrains_Package[0].nomTerrain);
+    printf("L'adresse de la texture GUI 1 est : %s\n",Pack_A.GUI_Package[0].GUI_default);
+    printf("La ligne 3 de la map 1 est : %s\n",Pack_A.Cartes_Package[0].lignes[2]);
 
+    /* -------------------------------------*/
+    /* -------------------------------------*/
+>>>>>>> 57f279bead6985e78bdd728e0a2cef1f16b293f6
 
+    main_SDL(Map_ANCIENNE_VERSION);
+
+<<<<<<< HEAD
 /* -------------------------------------*/
 /* Comment utiliser le package : */
 /* -------------------------------------*/
@@ -105,9 +156,19 @@ Pack_A.GUI_Package = GUI_Pack;
 printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[0].nom);
 printf("Le nom du terrain 1 est : %s\n",Pack_A.Terrains_Package[0].nomTerrain);
 printf("L'adresse de la texture GUI 1 est : %s\n",Pack_A.GUI_Package[0].GUI_default);
+=======
+    int n,i;
+
+    Carte * carteTest = nouvelleCarte();
+    init_carte(carteTest);
+>>>>>>> 57f279bead6985e78bdd728e0a2cef1f16b293f6
 
-main_SDL(Map_A);
+    n=carteTest;
 
+    for(i=0;i<TAILLE_MAX_CARTE;i++){
+        printf("x=%d, y=%d\n",n,get_x(n),get_y(n));
+        n=n+sizeof(Case);
+    }
 
-return 0;
+    return 0;
 }
diff --git a/src/structures.h b/src/structures.h
index 17e4dbd303e48fedd990158fea8e7fc83ed5a4b1..4531763360b9c9be66a9a40dbe13d18540d0e146 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -19,7 +19,9 @@
 #define STRUCTURES_H_INCLUDED
 
 /*! \def TAILLE_MAX_CARTE */
-#define TAILLE_MAX_CARTE 256
+#define TAILLE_MAX_CARTE 160
+/*! \def TAILLE_MAX_LIGNE */
+#define TAILLE_MAX_LIGNE 25
 /*! \def TAILLE_ID */
 #define TAILLE_ID 8
 /*! \def TAILLE_NOMS */
@@ -29,7 +31,7 @@
 /*! \def LARG_MAX_CARTE */
 #define LARG_MAX_CARTE 16
 /*! \def LONG_MAX_CARTE */
-#define HAUT_MAX_CARTE 16
+#define HAUT_MAX_CARTE 10
 
 /*! \enum boolean
  * \brief Definition du type Boolean.
@@ -73,8 +75,8 @@ typedef struct Terrain{
  * sizeof(Case) = 12 octets
  */
 typedef struct Case{
-    unsigned short int coord_x; /*!< Abscisse de la case*/
-    unsigned short int coord_y; /*!< Ordonnee de la case*/
+    int coord_x; /*!< Abscisse de la case*/
+    int coord_y; /*!< Ordonnee de la case*/
     Terrain * terrain; /*!< Le type de terrain de la case*/
     boolean occupee; /*!< La case est occupee ou non par un personnage*/
 } Case;
@@ -110,7 +112,7 @@ typedef struct Attaque{
     char nom[TAILLE_NOMS]; /*!< Nom de l'attaque de taille TAILLE_NOMS*/
     unsigned short int mana;
     unsigned short int portee; /*!< Portee en nombre de cases de l'attaque*/
-    Effet effets[5]; /*!< Tableau des effets appliques par l'attaque, cela comprend les dégâts de duree*/
+    Effet effets[5]; /*!< Tableau des effets appliques par l'attaque, cela comprend les dégâts de duree*/
 } Attaque;
 
 /*! \struct Classe structures.h
@@ -120,9 +122,9 @@ typedef struct Attaque{
 typedef struct Classe{
     char nom[25]; /*!< Nom de la classe de taille TAILLE_NOMS*/
     Attaque attaques[5]; /*!< Les attaques disponibles pour la classe*/
-    unsigned short int points_deplacement_max; /*!< Les PD maximums accordés a la classe*/
-    unsigned short int PV_max; /*!< Les PV maximums accordés a la classe*/
-    unsigned short int mana_max; /*!< Le mana maximum accordé a la classe*/
+    unsigned short int points_deplacement_max; /*!< Les PD maximums accordés a la classe*/
+    unsigned short int PV_max; /*!< Les PV maximums accordés a la classe*/
+    unsigned short int mana_max; /*!< Le mana maximum accordé a la classe*/
     Skins_Charac skins;
 }Classe;
 
@@ -166,6 +168,14 @@ typedef struct Effet_Competence{
 } Effet_Competence;
 
 
+typedef struct Carte_A{
+    char id[TAILLE_ID];
+    char nom[50];
+    char desc[100];
+    char lignes[17][11];
+} Carte_A;
+
+
 /*! \struct Classe structures.h
  * \brief Definition de la structure Game_Package
  * sizeof(Classe) =
@@ -174,6 +184,10 @@ typedef struct Game_Package{
     Classe* Classes_Package;
     Terrain* Terrains_Package;
     Skins_GUI* GUI_Package;
+<<<<<<< HEAD
+=======
+    Carte_A* Cartes_Package;
+>>>>>>> 57f279bead6985e78bdd728e0a2cef1f16b293f6
 }Game_Package;
 
 
@@ -187,7 +201,7 @@ typedef struct Game_Package{
  */
  typedef struct Joueur{
     char nomJoueur[TAILLE_NOMS]; /*!< Le nom identifiant le Joueur*/
-    Personnage * groupe[TAILLE_MAX_GROUPE];/*!< Les personnages du joueur qui prennent part à la partie.*/
+    Personnage * groupe[TAILLE_MAX_GROUPE];/*!< Les personnages du joueur qui prennent part à la partie.*/
  } Joueur;
 
  /*! \struct NodeJoueur structures.h
@@ -219,12 +233,13 @@ typedef struct Game_Package{
  * \brief Definition de la structure Partie
  *
  * Contient les informations concernant la partie telles que la liste des joueurs participants
- * le nombre de tours. Cette structure permet de gérer les tours
+ * le nombre de tours. Cette structure permet de gérer les tours
  * Peut eventuellement contenir l'information Carte si c'est utile.
  * sizeof(Partie) = 12 octets
  */
- typedef struct Partie{
-    ListJoueur * participants; /*!< La liste de joueurs prennant parts à la partie*/
+
+typedef struct Partie{
+    ListJoueur * participants; /*!< La liste de joueurs prennant parts à la partie*/
     int nbTours; /*!<Le nombre de tours actuel*/
     Carte * c; /*!<La Carte associee a la Partie*/
  }Partie;