diff --git a/src/case.c b/src/case.c
index f45a8d0b848e9282f877dc9a4e883b264eb86974..6ec15070a554c931a7233582ccbd034a0086fcec 100644
--- a/src/case.c
+++ b/src/case.c
@@ -1,5 +1,6 @@
 #include <stdio.h>
 #include <stdlib.h>
+#include <string.h>
 #include "terrain.h"
 #include "structures.h"
 #include "personnage.h"
@@ -25,6 +26,28 @@ int get_y(Case *c){
     return c->coord_y;
 }
 
+  /*!
+ * \fn char * getID(Carte_Jeu * c)
+ * \brief La fonction retourne un pointeur vers l'ID de la Carte_Jeu.
+ *
+ * \param Un pointeur vers la Carte_Jeu à tester
+ * \return Le pointeur vers l'ID de la Carte_Jeu.
+ */
+char * getID(Carte_Jeu * c){
+    return c->id;
+}
+
+  /*!
+ * \fn Case * getCase(Carte_Jeu * c, int x, int y)
+ * \brief La fonction retourne un pointeur vers la Case de la Carte_Jeu aux coordonnées x,y.
+ *
+ * \param Un pointeur vers la Carte_Jeu à tester et les coordonnées x et y en entier.
+ * \return un pointeur vers la Case aux coordonnées x, y.
+ */
+Case * getCase(Carte_Jeu * c, int x, int y){
+    return &c->Tab_Cases[x][y];
+}
+
 boolean est_occupee(Case *c){
     return c->occupee;
 }
@@ -54,8 +77,8 @@ Terrain* get_terrain(Case *c){
  *
  * \return Le pointeur vers la Carte creee.
  */
-Carte * nouvelleCarte(){
-    Carte * c = malloc(sizeof(Carte));
+Carte_Jeu * nouvelleCarte(){
+    Carte_Jeu * c = malloc(sizeof(Carte_Jeu));
     return c;
 }
 
@@ -65,10 +88,43 @@ Carte * nouvelleCarte(){
  *
  * \param le pointeur vers la Carte a supprimer.
  */
-void deleteCarte(Carte * c){
+void deleteCarte(Carte_Jeu * c){
     free(c);
 }
 
+  /*!
+ * \fn int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Terrain * terrainPackage)
+ * \brief La fonction initialise la carte du jeu a partir de la Carte du Package passée en parametre.
+ *
+ * \param Un pointeur vers la Carte_A du package qui sera la source, un pointeur vers la Carte_Jeu a initialiser, un pointeur vers le Game_Package de l'univers du jeu
+ * \return 1 si l'initialisation est correcte, 0 sinon.
+ */
+int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Game_Package * pack){
+    int i,j;
+    strncpy(getID(destination), sourceXML->id, TAILLE_ID);
+    for(i=0;i<LARG_MAX_CARTE;i++){
+        for(j=0;j<HAUT_MAX_CARTE;j++){
+            switch (sourceXML->lignes[i][j]){
+                case 'P' :
+                    init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[0]);
+                    break;
+                case 'R' :
+                    init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[1]);
+                    break;
+                case 'F' :
+                    init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[2]);
+                    break;
+                case 'M' :
+                    init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[3]);
+                    break;
+                default :
+                    return 0;
+            }
+        }
+    }
+    return 1;
+}
+
   /*!
  * \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.
@@ -83,7 +139,6 @@ int init_carte(Carte * 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);
         }
     }
diff --git a/src/case.h b/src/case.h
index 009684164b50155add042f5e9bdcf892f5343f68..d6bf9125f355733d4586acee206599c4c8a952f5 100644
--- a/src/case.h
+++ b/src/case.h
@@ -20,6 +20,10 @@ int get_x(Case *c);
 
 int get_y(Case *c);
 
+char * getID(Carte_Jeu * c);
+
+Case * getCase(Carte_Jeu * c, int x, int y);
+
 boolean est_occupee(Case *c);
 
 Terrain * init_terrain(Terrain * t, char * n, boolean f, unsigned short int PD);
@@ -34,12 +38,14 @@ void marquer_libre(Case *c);
 
 Terrain* get_terrain(Case *c);
 
-Carte * nouvelleCarte();
+Carte_Jeu * nouvelleCarte();
 
-void deleteCarte(Carte * c);
+void deleteCarte(Carte_Jeu * c);
 
 int init_carte(Carte* c);
 
+int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Game_Package * pack);
+
 /*Case * trouverCase(Carte * c, int x, int y);*/