diff --git a/resources/Maps.txt b/resources/Maps.txt
new file mode 100644
index 0000000000000000000000000000000000000000..027cf65dd2d6de1278370837699c7f5af91b294a
--- /dev/null
+++ b/resources/Maps.txt
@@ -0,0 +1,18 @@
+MAP1 10*16
+
+PFMMMFFPPF
+PFFFFFFPPF
+PFPPPFFPPF
+PFPPPFFPPF
+PFPPFFFPPF
+PFMMMFFPPF
+PFMFFFFPPF
+PFMMPFFPPF
+PFPPPFFPPF
+PFPPFFPPFP
+PFFPPFFPPF
+PFFFMFFPPF
+PFPMMFFPPF
+PFMMMFFPPF
+PFFFPFFPPF
+PFPPPPFPPF
\ No newline at end of file
diff --git a/src/carte.c b/src/carte.c
index f26fc64231d0da31e71d66ccab93a7b2406a57b6..c529481b50d46893e0c1574f13c369349a8e77d2 100644
--- a/src/carte.c
+++ b/src/carte.c
@@ -1,6 +1,51 @@
+#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)
+{
+    FILE* file_map = NULL;
+
+    char char_nb_lignes[2]="",char_nb_colonnes[2]="";
+    int nb_lignes = 0, nb_colonnes = 0, i=0, j=0;
+    char map[10][16];
+
+    file_map = fopen(filename, "r");
+
+    fseek(file_map, 5, SEEK_SET);
+    (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..39b31278f990ddd559c0914e4db619c2b92886b3 100644
--- a/src/carte.h
+++ b/src/carte.h
@@ -3,10 +3,14 @@
 * \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/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/main.c b/src/main.c
index 558af27d8b9e7c01f7b07dbcda0d94a1c50d0af6..cd2326cbd26180e66aaf5f9e8362ae03149e0408 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,20 @@ int init_jeu(const char *filename){ /* cr
 
 
 
+
 int main()
 {
 
 
+init_jeu("../resources/Init_jeu.xml");
+
+/* Pour Henri <3 */
+/*
+printf("La case choisie est : %c\n",LireCarte("../resources/Maps.txt",0)[50]);
+*/
 
- init_jeu("../resources/Init_jeu.xml");
 
-    main_SDL();
+main_SDL();