diff --git a/resources/fichier_init.txt b/resources/fichier_init.txt
new file mode 100644
index 0000000000000000000000000000000000000000..f23bb106ddf5a559267122b2fee9822057a0b7a7
--- /dev/null
+++ b/resources/fichier_init.txt
@@ -0,0 +1,55 @@
+<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/src/case.c b/src/case.c
index 028278c5ecfbae5175cdbdd8c0e5a9ba4bfce929..c4c790db6c22d7fca031d0b7a12040bbaf22363b 100644
--- a/src/case.c
+++ b/src/case.c
@@ -25,10 +25,6 @@ boolean est_occupee(Case *c){
     return c->occupee;
 }
 
-boolean terrain_franchissable(type_terrain *t){
-    return t->franchissable;
-}
-
 boolean case_franchissable(Case *c){
     return terrain_franchissable(c->terrain);
 }
diff --git a/src/case.h b/src/case.h
index 817cda98c3739efb1a1e939e6d539e08ceb13897..6d7f3809f275a9fb86a0179cac5a1d9abd04a9e2 100644
--- a/src/case.h
+++ b/src/case.h
@@ -9,6 +9,8 @@ int get_y(Case *c);
 
 boolean est_occupee(Case *c);
 
+type_terrain* init_terrain(type_terrain *t, type_nom n, boolean f, unsigned short int PD);
+
 boolean terrain_franchissable(type_terrain *t);
 
 boolean case_franchissable(Case *c);
diff --git a/src/main.c b/src/main.c
index a3eb74ebe4914b74d89582837c47988580d040ea..ccddb4df21345913c1124cb56406d6ec483a559f 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3,6 +3,16 @@
 #include "structures.h"
 
 
+int init_jeu(){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */
+    FILE *fichier;
+    fichier=fopen("../resources/fichier_init.txt","r");
+    if (fichier==NULL){
+        fprintf(stderr,"erreur dans l'ouverture du fichier");
+        return 1;
+    }
+
+}
+
 int main()
 {
     printf("Hello world!\n");
diff --git a/src/personnage.c b/src/personnage.c
index b9754e360b60e1dd34169a9ebcc174bdb4691d4c..7200e43eac9bc8a254f79575cdefb9dc5e271259 100644
--- a/src/personnage.c
+++ b/src/personnage.c
@@ -9,6 +9,7 @@ personnage* init_personnage(personnage *perso, classe *c, Case *casedepart){
     perso->classe=*c;
     perso->points_deplacement=c->points_deplacement_max;
     perso->PV=c->PV_max;
+    perso->mana=c->mana_max;
     perso->position=casedepart;
     marquer_occupee(casedepart);
     return perso;
@@ -34,6 +35,8 @@ int deplacer_personnage (personnage *perso, Case *destination){ /*d
     marquer_libre(getPosition(perso));
     perso->position=destination;
     marquer_occupee(getPosition(perso));
+    if(getPosition(perso)==destination) return 0;
+    return 1;
 }
 
 
diff --git a/src/structures.h b/src/structures.h
index 8f9f0c73ea3108d4eab31aa45128a20032ff9a0d..aaf9bc2af49bccbb6e0b9a5677be0f921eaa5e2d 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -5,7 +5,7 @@
 #define TAILLE_NOMS 16
 /* definition des structures nécessaires : case, classe, etc */
 
-typedef char type_nom[TAILLE_NOMS];
+typedef char* type_nom;
 
 typedef enum {faux, vrai} boolean;
 
@@ -34,9 +34,10 @@ typedef struct {
 
 typedef struct {
     type_nom nom;
-    attaque attaque;
+    attaque* attaques;
     unsigned short int points_deplacement_max;
     unsigned short int PV_max;
+    unsigned short int mana_max;
 } classe;
 
 typedef struct {
@@ -44,6 +45,7 @@ typedef struct {
     classe classe;
     unsigned short int points_deplacement;
     unsigned short int PV;
+    unsigned short int mana;
     boolean paralyse;
     Case *position;
 } personnage;
diff --git a/src/terrain.c b/src/terrain.c
new file mode 100644
index 0000000000000000000000000000000000000000..d5c5ca6e429244cb74785773b49e8c1b3007a59d
--- /dev/null
+++ b/src/terrain.c
@@ -0,0 +1,17 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include "structures.h"
+#include "case.h"
+#include "personnage.h"
+#include "deplacements.h"
+
+boolean terrain_franchissable(type_terrain *t){
+    return t->franchissable;
+}
+
+type_terrain* init_terrain(type_terrain *t, type_nom n, boolean f, unsigned short int PD){
+    t->franchissable=f;
+    t->nom=n;
+    t->PD_requis=PD;
+    return t;
+}