diff --git a/src/SDL_bis.c b/src/SDL_bis.c
index 3e6758a5cf8e13e4fdad8b8ab5027f352a415ba8..7eceef1bbde9f417d713bc99e7914796ff007ba4 100644
--- a/src/SDL_bis.c
+++ b/src/SDL_bis.c
@@ -63,7 +63,7 @@ int SDL_bis()
     char nom_joueur1[15] = "";
     fgets(nom_joueur1, sizeof(nom_joueur1), stdin);
     char nom_joueur2[15] = "";
-    ajouter_joueurs(nom_joueur1,nom_joueur2, &etat); //a coder par colin
+   // ajouter_joueurs(nom_joueur1,nom_joueur2, &etat); //a coder par colin
 
     while(quitter==0)
     {
diff --git a/src/competence.c b/src/competence.c
index 6be30f55db177863422ebc39133d737a0bfd6f48..274942211a50604b7e1b18d19d280a8d8410a8e8 100644
--- a/src/competence.c
+++ b/src/competence.c
@@ -67,31 +67,25 @@ int estVide(Competence *c)
 
 int set_comp_enfant(Competence *parent, Competence *nouvel_enfant)  /* Ne fonctionne pas */
 {
-
     if(estVide(parent))
     {
         init_Competence(parent->enfant);
         parent->enfant = nouvel_enfant;
     }
-    else
+    else  // Solution cracra mais ça ne marche pas autrement (avec un while) //
     {
-        init_Competence(parent->frere);
-        parent->frere = nouvel_enfant;
-        /* Ne fonctionne pas */
-        /*
-        Competence *enfant_temp;
-        enfant_temp=init_Competence(enfant_temp);
-        enfant_temp = parent->enfant;
-
-        while(enfant_temp!=NULL)
+        if(estVide(parent->enfant))
         {
-            enfant_temp = enfant_temp->frere;
+            parent->enfant->frere = nouvel_enfant;
+        }
+        else if(estVide(parent->enfant->frere))
+        {
+            parent->enfant->frere->frere = nouvel_enfant;
+        }
+        else if(estVide(parent->enfant->frere->frere))
+        {
+            parent->enfant->frere->frere->frere = nouvel_enfant;
         }
-        enfant_temp->frere = nouvel_enfant;
-
-        parent->enfant->frere = nouvel_enfant;
-        */
-
     }
     return 0;
 }
@@ -146,7 +140,6 @@ int taille(Competence *noeud)
     return compteur;
 }
 
-
 /*!
  * \fn unsigned int hauteur(Competence *noeud)
  * \brief La fonction indique la hauteur d'une competence dans l'arbre.
@@ -172,8 +165,6 @@ unsigned int hauteur(Competence *noeud)
     }
 }
 
-
-
 /*!
  * \fn boolean est_connue(Competence *c)
  * \brief La fonction indique si une competence est connue ou non.
@@ -209,8 +200,6 @@ unsigned int NbEnfants(Competence *noeud)
     return nb;
 }
 
-
-
 /*!
  * \fn boolean * est_complet(Competence *noeud)
  * \brief La fonction verifie si l'arbre est complet ou non.
@@ -228,16 +217,11 @@ boolean est_complet(Competence *noeud)
     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 */
 {
     return 0;
 }
 
-
-
-
-
 Effet_Competence * get_effet(Competence *c)       /* Renvoie l'effet d'une competence */
 {
     return c->effet;
@@ -265,12 +249,12 @@ Competence* Extraire_Arbres(char *filename)
         Competence *Arbre_Actuel;
         int nb_Comp1=0, i_1=0;
 
-        init_Competence(Arbre_Actuel);
+        Arbre_Actuel = init_Competence(Arbre_Actuel);
 
         nb_Comp1 = roxml_get_chld_nb(ArbreXML_Actuel);
         printf("L'arbre %d contient %d competences de niveau 1\n",i_0, nb_Comp1);
         set_comp_name(Arbre_Actuel,roxml_get_content(roxml_get_attr(ArbreXML_Actuel,"id",0),NULL,0,NULL));
-        printf("L'arbre actuel a pour nom : %s\n", Arbre_Actuel->nomComp);
+        printf("\nL'arbre actuel a pour nom : %s\n", Arbre_Actuel->nomComp);
 
         /* ---------------------------------------------------------------------------------------------- */
         /* Extraction des competences 1 */
@@ -282,75 +266,143 @@ Competence* Extraire_Arbres(char *filename)
             Competence *Competence_1;
             int nb_Comp2=0, i_2=0;
 
-            init_Competence(Competence_1);
+            Competence_1 = init_Competence(Competence_1);
 
             CompetenceXML_1 = roxml_get_chld(ArbreXML_Actuel, NULL, i_1);
             nb_Comp2 = roxml_get_chld_nb(CompetenceXML_1);
             printf("La competence numero %d de niveau 1 contient %d competences de niveau 2\n",i_1+1,nb_Comp2);
 
             set_comp_name(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"nom",0),NULL,0,NULL));
+            set_comp_id(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"id",0),NULL,0,NULL));
+            set_comp_prix(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"prix",0),NULL,0,NULL));
 
-            for(i_2=0; i_2<nb_Comp1; i_2++)
-            {
-            }
+            printf("La competence_1 actuelle a pour nom : %s\n", Competence_1->nomComp);
+            printf("La competence_1 actuelle a pour id : %s\n", Competence_1->id);
+            printf("La competence_1 actuelle a pour prix : %s\n", Competence_1->prix_competence);
 
 
-            /* La competence j devient un enfant de la competence i */
-            set_comp_enfant(Arbre_Actuel, Competence_1);
-            printf("L'enfant est : %s\n", Arbre_Actuel->enfant->nomComp);
+            for(i_2=0; i_2<nb_Comp2; i_2++)
+            {
+                node_t *CompetenceXML_2;
+                Competence *Competence_2;
+                int nb_Comp3=0, i_3=0;
+
+                Competence_2 = init_Competence(Competence_2);
+                CompetenceXML_2 = roxml_get_chld(CompetenceXML_1, NULL, i_2);
+                nb_Comp3 = roxml_get_chld_nb(CompetenceXML_2);
+                printf("La competence numero %d de niveau 2 contient %d competences de niveau 3\n",i_2+1,nb_Comp3);
+
+                set_comp_name(Competence_2,roxml_get_content(roxml_get_attr(CompetenceXML_2,"nom",0),NULL,0,NULL));
+                set_comp_id(Competence_2,roxml_get_content(roxml_get_attr(CompetenceXML_2,"id",0),NULL,0,NULL));
+                set_comp_prix(Competence_2,roxml_get_content(roxml_get_attr(CompetenceXML_2,"prix",0),NULL,0,NULL));
+
+                printf("La competence_2 actuelle a pour nom : %s\n", Competence_2->nomComp);
+                printf("La competence_2 actuelle a pour id : %s\n", Competence_2->id);
+                printf("La competence_2 actuelle a pour prix : %s\n", Competence_2->prix_competence);
+
+                for(i_3=0; i_3<nb_Comp3; i_3++)
+                {
+                    node_t *CompetenceXML_3;
+                    Competence *Competence_3;
+                    int nb_Comp4=0, i_4=0;
+
+                    Competence_3 = init_Competence(Competence_3);
+                    CompetenceXML_3 = roxml_get_chld(CompetenceXML_2, NULL, i_3);
+                    nb_Comp4 = roxml_get_chld_nb(CompetenceXML_3);
+                    printf("La competence numero %d de niveau 3 contient %d competences de niveau 4\n",i_3+1,nb_Comp4);
+
+                    set_comp_name(Competence_3,roxml_get_content(roxml_get_attr(CompetenceXML_3,"nom",0),NULL,0,NULL));
+                    set_comp_id(Competence_3,roxml_get_content(roxml_get_attr(CompetenceXML_3,"id",0),NULL,0,NULL));
+                    set_comp_prix(Competence_3,roxml_get_content(roxml_get_attr(CompetenceXML_3,"prix",0),NULL,0,NULL));
+
+                    printf("La competence_3 actuelle a pour nom : %s\n", Competence_3->nomComp);
+                    printf("La competence_3 actuelle a pour id : %s\n", Competence_3->id);
+                    printf("La competence_3 actuelle a pour prix : %s\n", Competence_3->prix_competence);
+
+                    for(i_4=0; i_4<nb_Comp4; i_4++)
+                    {
+                        node_t *CompetenceXML_4;
+                        Competence *Competence_4;
+
+                        Competence_4 = init_Competence(Competence_3);
+                        CompetenceXML_4 = roxml_get_chld(CompetenceXML_3, NULL, i_4);
+
+                        set_comp_name(Competence_4,roxml_get_content(roxml_get_attr(CompetenceXML_4,"nom",0),NULL,0,NULL));
+                        set_comp_id(Competence_4,roxml_get_content(roxml_get_attr(CompetenceXML_4,"id",0),NULL,0,NULL));
+                        set_comp_prix(Competence_4,roxml_get_content(roxml_get_attr(CompetenceXML_4,"prix",0),NULL,0,NULL));
+
+                        printf("La competence_4 actuelle a pour nom : %s\n", Competence_4->nomComp);
+                        printf("La competence_4 actuelle a pour id : %s\n", Competence_4->id);
+                        printf("La competence_4 actuelle a pour prix : %s\n", Competence_4->prix_competence);
+
+                        /* La competence 4 devient un enfant de la competence 3 */
+                        //set_comp_enfant(Competence_3, Competence_4);                         //FAIT PLANTER
+                    }
+                    /* La competence 3 devient un enfant de la competence 2 */
+                    //set_comp_enfant(Competence_2, Competence_3);                             //FAIT PLANTER
+                }
+                /* La competence 2 devient un enfant de la competence 1 */
+                set_comp_enfant(Competence_1, Competence_2);
+            }
+            /* La competence 1 devient un enfant du premier noeud */
+                set_comp_enfant(Arbre_Actuel, Competence_1);
         }
+
     }
+
+
+
     return 0;
 }
 
 
 
-int Test_Competences()
-{
-    printf("Debut Test Competences\n");
+    int Test_Competences()
+    {
+        printf("Debut Test Competences\n");
 
-    Competence *Comp_Test_Parent, *Comp_Test_Enfant, *Comp_Test_Petit_Enfant, *Comp_Test_Frere_Enfant;
+        Competence *Comp_Test_Parent, *Comp_Test_Enfant, *Comp_Test_Petit_Enfant, *Comp_Test_Frere_Enfant;
 
-    Comp_Test_Parent=init_Competence(Comp_Test_Parent);
-    Comp_Test_Enfant=init_Competence(Comp_Test_Enfant);
-    Comp_Test_Petit_Enfant=init_Competence(Comp_Test_Petit_Enfant);
-    Comp_Test_Frere_Enfant=init_Competence(Comp_Test_Frere_Enfant);
+        Comp_Test_Parent=init_Competence(Comp_Test_Parent);
+        Comp_Test_Enfant=init_Competence(Comp_Test_Enfant);
+        Comp_Test_Petit_Enfant=init_Competence(Comp_Test_Petit_Enfant);
+        Comp_Test_Frere_Enfant=init_Competence(Comp_Test_Frere_Enfant);
 
-    if(estVide(Comp_Test_Parent))   /* Test de estVide() */
-    {
-        printf("Parent n'a pas d'enfants\n");
-    }
+        if(estVide(Comp_Test_Parent))   /* Test de estVide() */
+        {
+            printf("Parent n'a pas d'enfants\n");
+        }
 
-    printf("Le nom de parent est : %s\n", Comp_Test_Parent->nomComp);  /* Vaut NULL après l'init */
+        printf("Le nom de parent est : %s\n", Comp_Test_Parent->nomComp);  /* Vaut NULL après l'init */
 
-    set_comp_prix(Comp_Test_Parent, 4);
-    set_comp_name(Comp_Test_Parent, "Pepe");
-    set_comp_id(Comp_Test_Parent, "ID_PE");
+        set_comp_prix(Comp_Test_Parent, 4);
+        set_comp_name(Comp_Test_Parent, "Pepe");
+        set_comp_id(Comp_Test_Parent, "ID_PE");
 
-    printf("Le nom de parent est : %s\n", Comp_Test_Parent->nomComp); /* Vaut bien le nom */
+        printf("Le nom de parent est : %s\n", Comp_Test_Parent->nomComp); /* Vaut bien le nom */
 
-    set_comp_name(Comp_Test_Enfant, "Papa");
-    set_comp_id(Comp_Test_Enfant, "ID_PA");
-    set_comp_name(Comp_Test_Petit_Enfant, "Bebe");
-    set_comp_id(Comp_Test_Enfant, "ID_BE");
-    set_comp_name(Comp_Test_Frere_Enfant, "Tonton");
-    set_comp_id(Comp_Test_Frere_Enfant, "ID_TON");
+        set_comp_name(Comp_Test_Enfant, "Papa");
+        set_comp_id(Comp_Test_Enfant, "ID_PA");
+        set_comp_name(Comp_Test_Petit_Enfant, "Bebe");
+        set_comp_id(Comp_Test_Enfant, "ID_BE");
+        set_comp_name(Comp_Test_Frere_Enfant, "Tonton");
+        set_comp_id(Comp_Test_Frere_Enfant, "ID_TON");
 
-    /* Tests */
-    printf("Le prix de Parent est %d\n", Comp_Test_Parent->prix_competence);
-    printf("Le nom de Parent est %s\n", Comp_Test_Parent->nomComp);
-    printf("L'ID de Parent est %s\n", Comp_Test_Parent->id);
-    /* ---- */
+        /* Tests */
+        printf("Le prix de Parent est %d\n", Comp_Test_Parent->prix_competence);
+        printf("Le nom de Parent est %s\n", Comp_Test_Parent->nomComp);
+        printf("L'ID de Parent est %s\n", Comp_Test_Parent->id);
+        /* ---- */
 
-    set_comp_enfant(Comp_Test_Parent, Comp_Test_Enfant); /* Association Parent-Enfant */
+        set_comp_enfant(Comp_Test_Parent, Comp_Test_Enfant); /* Association Parent-Enfant */
 
-    set_comp_enfant(Comp_Test_Parent, Comp_Test_Frere_Enfant); /* Insertion d'un deuxième enfant (qui doit devenir le frère du premier) */
+        set_comp_enfant(Comp_Test_Parent, Comp_Test_Frere_Enfant); /* Insertion d'un deuxième enfant (qui doit devenir le frère du premier) */
 
-    printf("\nL'enfant de %s est %s\n", Comp_Test_Parent->nomComp, Comp_Test_Parent->enfant->nomComp);
-    printf("L'autre enfant de %s est %s\n", Comp_Test_Parent->nomComp, Comp_Test_Parent->frere->nomComp);
+        printf("\nL'enfant de %s est %s\n", Comp_Test_Parent->nomComp, Comp_Test_Parent->enfant->nomComp);
+        printf("L'autre enfant de %s est %s\n", Comp_Test_Parent->nomComp, Comp_Test_Parent->enfant->frere->nomComp);
 
 
-   return 0;
+        return 0;
 }
 
 
diff --git a/src/main.c b/src/main.c
index 7fc34629258d697d656ae3e8d38f400d0fca4fa7..81fb3bc63149c6cc304373c94f840c2854e3fd25 100644
--- a/src/main.c
+++ b/src/main.c
@@ -100,7 +100,7 @@ Game_Package Pack_A = Construire_Package();
 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");
-//Competence* Competences_Pack = Extraire_Arbres("../resources/Competences.xml");
+/*Competence* Competences_Pack = */Extraire_Arbres("../resources/Competences.xml");
 
 
 Pack_A.Classes_Package = Classes_Pack;
@@ -112,18 +112,18 @@ Pack_A.GUI_Package = GUI_Pack;
     /* -------------------------------------*/
 
 
-    printf("\nL'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[2].nom);
+  /*  printf("\nL'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]);
-
+*/
     /* -------------------------------------*/
     /* -------------------------------------*/
 
     //main_SDL(Map_ANCIENNE_VERSION);
-    SDL_bis();
+    //SDL_bis();
 
-    Test_Competences();
+    //Test_Competences();
 
 
 
diff --git a/src/structures.h b/src/structures.h
index 19b21ca7e3f44675b7a87b6fef3d22344c81926e..4c8578772f84df51182ac92a1deb970b1deb88dd 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -23,7 +23,7 @@
 /*! \def TAILLE_MAX_LIGNE */
 #define TAILLE_MAX_LIGNE 25
 /*! \def TAILLE_ID */
-#define TAILLE_ID 10
+#define TAILLE_ID 20
 /*! \def TAILLE_NOMS */
 #define TAILLE_NOMS 25
 /*! \def TAILLE_MAX_GROUPE */
@@ -222,6 +222,7 @@ typedef struct Carte_A{
 } Carte_A;
 
 
+
 /*! \struct Classe structures.h
  * \brief Definition de la structure Game_Package
  * sizeof(Classe) =