diff --git a/.gitignore b/.gitignore
index 3062a35dc0111049a9b65f3ee2cd4d3bca5ec4fa..b09582c4bd7a8e6cb48c6b7ab63ea4a311e83eeb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,3 @@
 *.o
 *.exe
-*.depend
-*.layout
-*.cbp
-!ElderInternalIgnition/ElderInternalIgnition.cbp
-src/bin
-src/obj
-
+build
diff --git a/Taches.txt b/Taches.txt
deleted file mode 100644
index 038a23821ae8aa63a25926c95ede391e75e070d8..0000000000000000000000000000000000000000
--- a/Taches.txt
+++ /dev/null
@@ -1 +0,0 @@
-Tâches à réaliser 
\ No newline at end of file
diff --git a/build/.gitignore.txt b/build/.gitignore.txt
deleted file mode 100644
index 8d4a6c08a83aaa5470f3c556faf2988be0ed1288..0000000000000000000000000000000000000000
--- a/build/.gitignore.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-bin
-obj
\ No newline at end of file
diff --git a/resources/Cases terrain/Thumbs.db b/resources/Cases terrain/Thumbs.db
index 4b9f168cf4e8593c33cba85aef7844943b5a7c19..f5dd34a94264d5aad0330b8f2c49b32935681475 100644
Binary files a/resources/Cases terrain/Thumbs.db and b/resources/Cases terrain/Thumbs.db differ
diff --git a/resources/Cases.xml b/resources/Cases.xml
deleted file mode 100644
index c1c6f0564ab131b693d6d18a5baccc748d5bc9e9..0000000000000000000000000000000000000000
--- a/resources/Cases.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Cases>
-	<Case id="G_PLAIN"  name="Plaine"  FR="1"  FRS="1"  PDR="1"  Desc="Plaine de bon sens">
-	</Case>
-	<Case id="G_RIVER"  name="Riviere" FR="0"  FRS="1"  PDR="0"  Desc="River, arrete de river">
-	</Case>
-	<Case id="G_FOREST"  name="Foret"  FR="1"  FRS="1"  PDR="2"  Desc="Le frère de Fopart">
-	</Case>
-	<Case id="G_MOUNT"  name="Montagne" FR="0"  FRS="0"  PDR="0"  Desc="Montagne est plus haut que tontagne">
-	</Case>
-</Cases>
\ No newline at end of file
diff --git a/resources/Maps.txt b/resources/Maps.txt
new file mode 100644
index 0000000000000000000000000000000000000000..79cb99b30ad75a95b4b0010c1a936749b862cea4
--- /dev/null
+++ b/resources/Maps.txt
@@ -0,0 +1,78 @@
+MAP1 10*16
+
+MFMMMFFPPF
+PFFFFFFPPF
+PFPPPFFPPF
+PFPPPFFPPF
+PFPPFFFPPF
+PFMMMFFPPF
+PFMFFFFPPF
+PFMMPFFPPF
+PFPPPFFPPF
+PFPPFFPPFP
+PFFPPFFPPF
+PFFFMFFPPF
+PFPMMFFPPF
+PFMMMFFPPF
+PFFFPFFPPF
+PFPPPPFPPF
+
+
+MAP2 10*16
+
+FFMMMFFPPF
+PFFFFFFPPF
+PFPPPFFPPF
+PFPPPFFPPF
+PFPPFFFPPF
+PFMMMFFPPF
+PFMFFFFPPF
+PFMMPFFPPF
+PFPPPFFPPF
+PFPPFFPPFP
+PFFPPFFPPF
+PFFFMFFPPF
+PFPMMFFPPF
+PFMMMFFPPF
+PFFFPFFPPF
+PFPPPPFPPF
+
+
+MAP3 10*16
+
+FFMMMFFPPF
+PFFFFFFPPF
+PFPPPFFPPF
+PFPPPFFPPF
+PFPPFFFPPF
+PFMMMFFPPF
+PFMFFFFPPF
+PFMMPFFPPF
+PFPPPFFPPF
+PFPPFFPPFP
+PFFPPFFPPF
+PFFFMFFPPF
+PFPMMFFPPF
+PFMMMFFPPF
+PFFFPFFPPF
+PFPPPPFPPF
+
+
+MAP4 10*16
+
+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/Talents.xml b/resources/Talents.xml
deleted file mode 100644
index c0144a1b3bb30e18252e14273322cf3eade40a79..0000000000000000000000000000000000000000
--- a/resources/Talents.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<talents>
-    <talent name="talent1" id="1" desc="" kind="water" bli="">
-      <childs>
-        <child name="talent4"/>
-        <child name="talent5"/>
-      </childs>
-    </talent>
-    <talent name="talent2" id="2" desc="" kind="wind" bli="">
-      <childs>
-        <child name="talent3"/>
-      </childs>
-    </talent>
-    <talent name="talent3" id="3" desc="" bla="" bli="">
-      <childs>
-        <child name="talent5"/>
-      </childs>
-    </talent>
-    <talent name="talent4" id="4" desc="" bla="" bli="">
-      <childs>
-      </childs>
-    </talent>
-    <talent name="talent5" id="5" desc="" bla="" bli="">
-      <childs>
-      </childs>
-    </talent>
-</talents>
diff --git a/resources/Thumbs.db b/resources/Thumbs.db
index d2f48f0b750c8d1754f3df2c9a1b99ac5c2eba23..95640b3ac79fecd290ccd064b7e22f23410e8128 100644
Binary files a/resources/Thumbs.db and b/resources/Thumbs.db differ
diff --git a/resources/archer.bmp b/resources/archer.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..511a7f2984b6b64f924d81b05f337c554fb053f9
Binary files /dev/null and b/resources/archer.bmp differ
diff --git a/resources/case_brillante.bmp b/resources/case_brillante.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..3404ed557f71b7478cb5452288a380eae35d46ac
Binary files /dev/null and b/resources/case_brillante.bmp differ
diff --git a/resources/eau.bmp b/resources/eau.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..f32e899ea1291ecede87385caab8951bccb20d3e
Binary files /dev/null and b/resources/eau.bmp differ
diff --git a/resources/fichier_init.txt b/resources/fichier_init.txt
deleted file mode 100644
index f23bb106ddf5a559267122b2fee9822057a0b7a7..0000000000000000000000000000000000000000
--- a/resources/fichier_init.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-<listeterrains>
-<terrain>
-<nom>plaine</nom>
-<franchissable>oui</franchissable>
-<ptdep>1</ptdep>
-</terrain>
-<terrain>
-<nom>eau</nom>
-<franchissable>non</franchissable>
-</terrain>
-<terrain>
-<nom>montagne</nom>
-<franchissable>non</franchissable>
-</terrain>
-<terrain>
-<nom>forêt</nom>
-<franchissable>oui</franchissable>
-<ptdep>2</ptdep>
-</terrain>
-</listeterrains>
-<listeclasses>
-<classe>
-<nom>guerrier</nom>
-<pv>150</pv>
-<ptdep>2</ptdep>
-<mana>100</mana>
-<listeattaques>
-<attaque>
-<nom>coup d'épée</nom>
-<degats>15</degats>
-</attaque>
-<attaque>
-<nom>écorchure</nom>
-<degatsduree>5</degatsduree>
-</attaque>
-</listeattaques>
-</classe>
-<classe>
-<nom>mage</nom>
-<pv>100</pv>
-<ptdep>2</ptdep>
-<mana>150</mana>
-<listeattaques>
-<attaque>
-<nom>boule de feu</nom>
-<degats>15</degats>
-<degatsduree>5</degatsduree>
-</attaque>
-<attaque>
-<nom>gel</nom>
-<paralysie>oui</paralysie>
-</attaque>
-</listeattaques>
-</classe>
-</listeclasses>
\ No newline at end of file
diff --git a/resources/foret.bmp b/resources/foret.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..ed15b2dfc38a584980251eae08a6cb111f809678
Binary files /dev/null and b/resources/foret.bmp differ
diff --git a/resources/guerisseur.bmp b/resources/guerisseur.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..03c7a5eaf4ee88c26fb8b7cf027ea116c8ef3c71
Binary files /dev/null and b/resources/guerisseur.bmp differ
diff --git a/resources/guerrier.bmp b/resources/guerrier.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..11ed07cf6b65083316421dcb3482bd0d6cb56787
Binary files /dev/null and b/resources/guerrier.bmp differ
diff --git a/resources/mage.bmp b/resources/mage.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..3c7a265b7b8e0310fcbc535d5433643a84d26bb6
Binary files /dev/null and b/resources/mage.bmp differ
diff --git a/resources/montagne.bmp b/resources/montagne.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..7f9d39d2351285b70850afa38de5448b2481111a
Binary files /dev/null and b/resources/montagne.bmp differ
diff --git a/resources/normal2_brillant.bmp b/resources/normal2_brillant.bmp
deleted file mode 100644
index 93b0bdfe431857f7793bc045fdc98a0d4844874a..0000000000000000000000000000000000000000
Binary files a/resources/normal2_brillant.bmp and /dev/null differ
diff --git a/resources/personnage.bmp b/resources/personnage.bmp
deleted file mode 100644
index b8d2370a77c2c3eda79bbcf9d6dc4834901c60ff..0000000000000000000000000000000000000000
Binary files a/resources/personnage.bmp and /dev/null differ
diff --git a/resources/normal2.bmp b/resources/plaine.bmp
similarity index 100%
rename from resources/normal2.bmp
rename to resources/plaine.bmp
diff --git a/resources/voleur.bmp b/resources/voleur.bmp
new file mode 100644
index 0000000000000000000000000000000000000000..69e6c110771d78061b420f0a612faa3adbe3efbd
Binary files /dev/null and b/resources/voleur.bmp differ
diff --git a/src/SDL.c b/src/SDL.c
index 2aeca95df54f56d8e2245197aedf4195e71b39e9..07a4eb5e430c4166346257de7ff7b50b6a4e88cf 100644
--- a/src/SDL.c
+++ b/src/SDL.c
@@ -21,8 +21,15 @@ int main_SDL()
     int i,j;
     SDL_Surface* ecran=NULL;
     SDL_Event event;
-    SDL_Surface* perso[NB_PERSO]={NULL};
-    SDL_Surface* Case=NULL;
+    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* Case_brillante=NULL;
     SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE];
     SDL_Rect Position_Perso[NB_PERSO];
@@ -46,28 +53,86 @@ int main_SDL()
 
     SDL_WM_SetCaption("Elder Internal Ignition",NULL);
 
-    perso[0] = SDL_LoadBMP("../resources/personnage.bmp");
-        if (!perso[0])
+    guerrier = SDL_LoadBMP("../resources/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));
+
+    mage = SDL_LoadBMP("../resources/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/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/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/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/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/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/montagne.bmp");
+    if (!montagne)
         {
             printf("Unable to load bitmap: %s\n", SDL_GetError());
             return 1;
         }
-    SDL_SetColorKey(perso[0], SDL_SRCCOLORKEY, SDL_MapRGB(perso[0]->format, 0, 0, 255));
-    Case = SDL_LoadBMP("../resources/normal2.bmp");
-    if (!Case)
+    SDL_SetColorKey(montagne, SDL_SRCCOLORKEY, SDL_MapRGB(montagne->format, 0, 0, 255));
+
+    foret = SDL_LoadBMP("../resources/foret.bmp");
+    if (!foret)
         {
             printf("Unable to load bitmap: %s\n", SDL_GetError());
             return 1;
         }
-    SDL_SetColorKey(Case, SDL_SRCCOLORKEY, SDL_MapRGB(Case->format, 0, 0, 255));
+    SDL_SetColorKey(foret, SDL_SRCCOLORKEY, SDL_MapRGB(foret->format, 0, 0, 255));
 
-    Case_brillante = SDL_LoadBMP("../resources/normal2_brillant.bmp");
+    Case_brillante = SDL_LoadBMP("../resources/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->format, 0, 0, 255));
+    SDL_SetColorKey(Case_brillante, SDL_SRCCOLORKEY, SDL_MapRGB(Case_brillante->format, 0, 0, 255));
 
     for(i=0;i<LARGEUR_CARTE;i+=2)
     {
@@ -97,7 +162,7 @@ int main_SDL()
                 quitter=1;
                 break;
             case SDL_MOUSEBUTTONDOWN:
-                deplacement_personnage(0,event.button.x,event.button.y);
+                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)
@@ -108,6 +173,9 @@ int main_SDL()
                 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;
@@ -116,23 +184,35 @@ int main_SDL()
                 }
              break;
         }
-        Position_Perso[0].x=get_position_perso_x(0);
-        Position_Perso[0].y=get_position_perso_y(0);
+        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;
         SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0));
         for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++)
         {
-            SDL_BlitSurface(Case,NULL,ecran,&Position_Case[i]);
+            SDL_BlitSurface(plaine,NULL,ecran,&Position_Case[i]);
         }
         SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);
-        SDL_BlitSurface(perso[0],NULL,ecran,&Position_Perso[0]);
+        for(i=0;i<NB_PERSO;i++)
+        {
+            SDL_BlitSurface(guerrier,NULL,ecran,&Position_Perso[i]);
+        }
         SDL_Flip(ecran);
     }
     quitter=0;
-    SDL_FreeSurface(Case);
+    SDL_FreeSurface(guerrier);
     SDL_FreeSurface(Case_brillante);
-    SDL_FreeSurface(perso[0]);
+    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/src/SDL.h b/src/SDL.h
index d1d7ade08eba5fb3f482617e11684351255b1a39..efc34f953da2cafaa6f1886bf00642fdad52853c 100644
--- a/src/SDL.h
+++ b/src/SDL.h
@@ -11,7 +11,7 @@
 #define HAUTEUR_CARTE 10
 #define LARGEUR_CASE 53
 #define HAUTEUR_CASE 71
-#define NB_PERSO 1
+#define NB_PERSO 3
 
 int main_SDL();
 
diff --git a/src/carte.c b/src/carte.c
index f26fc64231d0da31e71d66ccab93a7b2406a57b6..b72e5b8a37625ee34f13e5aa6c77ddb8eaa6d6d7 100644
--- a/src/carte.c
+++ b/src/carte.c
@@ -1,6 +1,68 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include "carte.h"
 
+
 /*!
 * \file carte.c
 * \brief Fichier contenant le code des fonctions liees aux cartes.
 */
+
+
+/*!
+ * \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.
+ */
+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;
+    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)
+    {
+        for(k=0; k<nb_colonnes+4; k++) /*! Descend jusqu'à la prochaine map */
+        {
+            fseek(file_map,nb_lignes,SEEK_CUR);
+        }
+        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);
+
+    char * TableauCarte = NULL;
+    TableauCarte = malloc(nb_colonnes * nb_lignes * sizeof(char));
+
+    for(i=0; i<nb_colonnes; i++)
+    {
+        for(j=0; j<=nb_lignes; j++)
+        {
+            TableauCarte[nb_lignes*i+j]=fgetc(file_map);
+        }
+    }
+
+    fclose(file_map);
+    return TableauCarte;
+}
+
+
diff --git a/src/carte.h b/src/carte.h
index 8ab25c14e2c778d20ebf4b85535e7590632b02dd..bc58c4cff4271ba2adf70c07cc06708b09a0e922 100644
--- a/src/carte.h
+++ b/src/carte.h
@@ -3,10 +3,13 @@
 * \brief Fichier contenant les signatures des fonctions liees a la structure carte.
 */
 
+char* LireCarte(const char *filename, int num);
 
 #ifndef CARTE_H_INCLUDED
 #define CARTE_H_INCLUDED
 
+#include "structures.h"
+
 
 
 #endif // CARTE_H_INCLUDED
diff --git a/src/case.c b/src/case.c
index a8622e554d5745cde1d452f23fc58c97a707b12b..19c89fbf60381e974526d835ce07e3dbfe5e92ad 100644
--- a/src/case.c
+++ b/src/case.c
@@ -67,23 +67,3 @@ int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur){
     }
     return 0;
 }
-
-/*!
- * \fn Case * trouverCase(Carte * c, int x, int y)
- * \brief La fonction renvoie un pointeur vers la case qui possede les coordonnees en entree.
- *
- * \param Les coordonnees a tester
- * \return Un pointeur vers la Case qui possede les coordonnees en entree, NULL s'il n'y a pas de Case avec ces coordonnees.
- */
- /*
-Case * trouverCase(Carte * c, int x, int y){
-    if((x<0)||(x>=LARG_MAX_CARTE)){
-        return NULL;
-    }
-    else if((y<0)||(y>=HAUT_MAX_CARTE)){
-        return NULL;
-    }
-    else{
-        return c[(x*LARG_MAX_CARTE)+y];
-    }
-} */
diff --git a/src/competence.c b/src/competence.c
index 071ecb1ea1f13713d3701de79a275eccb024e271..2e180f78f60fd7a5a10b769db79d6117a30f1c18 100644
--- a/src/competence.c
+++ b/src/competence.c
@@ -22,6 +22,65 @@ typedef struct Competence{
 
 */
 
+/* Arbre manuel */
+Competence comp_1;
+Competence comp_11;
+Competence comp_12;
+Competence comp_111;
+Competence comp_112;
+Competence comp_121;
+
+/*!
+ * \fn int set_Enfant(Competence *parent, Competence *enfant)
+ * \brief La fonction ajoute un enfant à une competence.
+ *
+ * \return Un entier.
+ */
+int set_Enfant(Competence *parent, Competence *nouvel_enfant)
+{
+    if(estVide(parent))
+    {
+        parent->enfant = nouvel_enfant;
+    }else{
+        Competence *enfant = parent->enfant;
+        while(enfant!=NULL)
+        {
+            enfant = enfant->frere;       // A FINIR
+        }
+        enfant->frere = nouvel_enfant;
+
+    }
+    return 0;
+}
+
+
+
+/*!
+ * \fn int init_Competence(Competence *noeud)
+ * \brief La fonction initialise une competence.
+ *
+ * \return Un entier.
+ */
+int init_Competence(Competence *noeud)
+{
+    noeud->nomComp[0] = '\0';
+    noeud->id[0] = '\0';
+    noeud->prix_competence = 0;
+    noeud->frere = NULL;
+    noeud->enfant = NULL;
+    noeud->effet = NULL;
+
+    return 0;
+}
+
+
+
+/*!
+ * \fn int taille(Competence *noeud)
+ * \brief La fonction renvoie le nombre d'enfants totaux d'une competence.
+ *
+ * \return Un entier positif.
+ */
 int taille(Competence *noeud)
 {
     Competence *enfant;
@@ -31,6 +90,13 @@ int taille(Competence *noeud)
     return compteur;
 }
 
+
+/*!
+ * \fn unsigned int hauteur(Competence *noeud)
+ * \brief La fonction indique la hauteur d'une competence dans l'arbre.
+ *
+ * \return Un entier positif.
+ */
 unsigned int hauteur(Competence *noeud)
 {
     if (!estVide(noeud))
@@ -48,6 +114,12 @@ unsigned int hauteur(Competence *noeud)
     }
 }
 
+/*!
+ * \fn int estVide(Competence *c)
+ * \brief La fonction indique si une competence n'a pas d'enfants.
+ *
+ * \return Un booleen.
+ */
 int estVide(Competence *c)
 {
     if (c->enfant == NULL)
@@ -56,12 +128,25 @@ int estVide(Competence *c)
         return 1;
 }
 
+
+/*!
+ * \fn boolean est_connue(Competence *c)
+ * \brief La fonction indique si une competence est connue ou non.
+ *
+ * \return Un booleen.
+ */
 boolean est_connue(Competence *c)
 {
     return (c->connu);
 }
 
 
+/*!
+ * \fn unsigned int * NbEnfants(Competence *noeud)
+ * \brief La fonction renvoie le nombre d'enfants d'une competence.
+ *
+ * \return Un entier positif.
+ */
 unsigned int NbEnfants(Competence *noeud)
 {
     unsigned int nb;
@@ -93,9 +178,21 @@ int rafraichir_competences(Competence * a){
 
 
 
-
-boolean est_complet(Competence *a){
-    return 0;
+/*!
+ * \fn boolean * est_complet(Competence *noeud)
+ * \brief La fonction verifie si l'arbre est complet ou non.
+ *
+ * \return Un booleen.
+ */
+boolean est_complet(Competence *noeud)
+{
+    Competence *enfant;
+    for(noeud->enfant; enfant!= NULL; enfant=enfant->frere)
+    {
+        if(!est_complet(enfant))
+            return 0;
+    }
+    return 1;
 }
 
 int chemin_auto_competence(Competence* c){      /* Renvoie la liste des compétences non connues se trouvant sur le chemin d'une compétence sélectionnée */
diff --git a/src/competence.h b/src/competence.h
index 54bbe42e5e1a59e2e9a77e766d749f6a4800f41a..0ede77ece0bcb0bb448b15a6af608e683161226f 100644
--- a/src/competence.h
+++ b/src/competence.h
@@ -8,6 +8,8 @@
 
 /* Fonctions */
 
+int init_Competence(Competence *noeud);
+
 int taille(Competence *noeud);
 
 unsigned int NbEnfants(Competence *noeud);
diff --git a/src/controleurSDL.c b/src/controleurSDL.c
index fb1f44d96a9ea9b05ca61a269dfd197e68ca008e..6c31a89b0c26885eb54937893cda3964934d9a7b 100644
--- a/src/controleurSDL.c
+++ b/src/controleurSDL.c
@@ -18,6 +18,7 @@
 
 Carte Carte_actuelle;
 Personnage ListePersos[NB_PERSO];
+int perso_actuel=0;
 
 
 void init_controleur(SDL_Rect Position_Case[])
@@ -27,7 +28,8 @@ void init_controleur(SDL_Rect Position_Case[])
      {
        init_case(&Carte_actuelle[i],Position_Case[i].x,Position_Case[i].y,NULL);
      }
-    init_personnage(&ListePersos[0],NULL,&Carte_actuelle[0]);
+    for(i=0;i<NB_PERSO;i++)
+    init_personnage(&ListePersos[i],NULL,&Carte_actuelle[i]);
 }
 
 int x_case_cliquee(int x_pixel, int y_pixel)
@@ -63,13 +65,19 @@ Case * trouverCase(Carte c, int x, int y)
     }
 }
 
+persosuivant(){
+    if(perso_actuel<NB_PERSO-1)
+    perso_actuel++;
+    else
+    perso_actuel=0;
+}
 
-void deplacement_personnage(int num, int x, int y)
+void deplacement_personnage(int x, int y)
 {
     if(x<LARGEUR_CARTE*LARGEUR_CASE&&y<HAUTEUR_CARTE*HAUTEUR_CASE)
     {
         Case* case_cliquee = trouverCase(Carte_actuelle,x_case_cliquee(x,y),y_case_cliquee(x,y));
-        Personnage* perso = &ListePersos[num];
+        Personnage* perso = &ListePersos[perso_actuel];
         if (case_a_cote(perso,case_cliquee,HAUTEUR_CASE,LARGEUR_CASE)==vrai)
         {
             deplacer_personnage(perso, case_cliquee);
diff --git a/src/controleurSDL.h b/src/controleurSDL.h
index fcd7168f2f517740e0f5ec921a162a147ad52344..41d571d4493d3d7b2e7412035bd698f94e7fd8e8 100644
--- a/src/controleurSDL.h
+++ b/src/controleurSDL.h
@@ -13,7 +13,7 @@ int x_case_cliquee(int x_pixel, int y_pixel);
 
 Case * trouverCase(Carte c, int x, int y);
 
-void deplacement_personnage(int num, int x, int y);
+void deplacement_personnage(int x, int y);
 
 Case* get_case_perso(int num);
 
@@ -29,5 +29,7 @@ int get_position_case_y(Case * Case);
 
 int get_position_case_x(Case * Case);
 
+void persosuivant();
+
 #endif
 
diff --git a/src/main.c b/src/main.c
index 558af27d8b9e7c01f7b07dbcda0d94a1c50d0af6..11dacdda2e37458376a2adbaf6bd2bab135c42b3 100644
--- a/src/main.c
+++ b/src/main.c
@@ -6,6 +6,7 @@
 #include "terrain.h"
 #include "SDL.h"
 #include "roxml.h"
+#include "carte.h"
 
 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;
@@ -62,14 +63,21 @@ 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]);
+
 
- init_jeu("../resources/Init_jeu.xml");
 
-    main_SDL();
+main_SDL();