From 404a4bcc4ca081db9d37eca3f5026e3ba31ed190 Mon Sep 17 00:00:00 2001
From: Henri Montjoie <henri.montjoie@insa-rennes.fr>
Date: Sun, 28 Feb 2016 12:03:30 +0100
Subject: [PATCH] =?UTF-8?q?=C3=A9bauche=20d'initialisation=20depuis=20un?=
 =?UTF-8?q?=20fichier?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 resources/fichier_init.txt | 55 ++++++++++++++++++++++++++++++++++++++
 src/case.c                 |  4 ---
 src/case.h                 |  2 ++
 src/main.c                 | 10 +++++++
 src/personnage.c           |  3 +++
 src/structures.h           |  6 +++--
 src/terrain.c              | 17 ++++++++++++
 7 files changed, 91 insertions(+), 6 deletions(-)
 create mode 100644 resources/fichier_init.txt
 create mode 100644 src/terrain.c

diff --git a/resources/fichier_init.txt b/resources/fichier_init.txt
new file mode 100644
index 0000000..f23bb10
--- /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 028278c..c4c790d 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 817cda9..6d7f380 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 a3eb74e..ccddb4d 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 b9754e3..7200e43 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 8f9f0c7..aaf9bc2 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 0000000..d5c5ca6
--- /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;
+}
-- 
GitLab