From 693f9c2628d19f62aecb2e2d981c405024f4a61e Mon Sep 17 00:00:00 2001
From: Romain Jegat <romain.jegat@insa-rennes.fr>
Date: Wed, 6 Apr 2016 17:59:08 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20de=20Terrains.c/.h,=20modifications=20d?=
 =?UTF-8?q?e=20structures.=20L'=C3=A9criture=20dans=20le=20boolean=20de=20?=
 =?UTF-8?q?terrain=20ne=20fonctionne=20pas=20malgr=C3=A9=20le=20typedef.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 resources/Terrains.xml | 11 +++++++++++
 src/case.c             | 34 ++--------------------------------
 src/case.h             |  9 ++++-----
 src/classe.h           |  2 +-
 src/main.c             | 20 +++++++++++++++++++-
 src/structures.h       |  8 ++++----
 src/terrain.c          | 41 ++++++++++++++++++++++++++++++++++-------
 src/terrain.h          | 21 +++++++++++++++++++++
 8 files changed, 96 insertions(+), 50 deletions(-)
 create mode 100644 resources/Terrains.xml
 create mode 100644 src/terrain.h

diff --git a/resources/Terrains.xml b/resources/Terrains.xml
new file mode 100644
index 0000000..117e042
--- /dev/null
+++ b/resources/Terrains.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Terrains>
+	<Terrain id="G_PLAIN"  name="Plaine"  FR="1"  FRS="2"  PDR="3"  Desc="Plaine de bon sens">
+	</Terrain>
+	<Terrain id="G_RIVER"  name="Riviere" FR="4"  FRS="5"  PDR="6"  Desc="River, arrete de river">
+	</Terrain>
+	<Terrain id="G_FOREST"  name="Foret"  FR="7"  FRS="8"  PDR="9"  Desc="Le frère de Fopart">
+	</Terrain>
+	<Terrain id="G_MOUNT"  name="Montagne" FR="10"  FRS="11"  PDR="12"  Desc="Montagne est plus haut que tontagne">
+	</Terrain>
+</Terrains>
\ No newline at end of file
diff --git a/src/case.c b/src/case.c
index d3541f6..6592a8c 100644
--- a/src/case.c
+++ b/src/case.c
@@ -1,41 +1,11 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "structures.h"
-#include "case.h"
 #include "personnage.h"
 #include "deplacements.h"
 
-/* Procédure de remplissage des cases à partir d'un fichier XML */
-Case* Librairie_Cases(const char *filename){
 
-return Remplir_Cases_log(filename);
-
-}
-
-
-/* Generation d'un fichier log decrivant le deroulement de la procedure d'aquisition des cases */
-Case* Remplir_Cases_log(const char *filename)
-{
-
-    FILE* Cases_log = NULL;
-    Cases_log = fopen("Cases_XML_log", "w");
-    if (Cases_log != NULL)
-    {
-        fprintf(Cases_log,"Fichier decrivant le deroulement de la procedure d'aquisition des Cases\n\n");
-        return Remplir_Cases(Cases_log, filename);
-        fclose(Cases_log);
-    }
-    else
-    {
-        fprintf(stderr,"Impossible d'ouvrir le fichier Cases_XML_log");
-        return 0;
-    }
-}
-
-
-
-
-Case * init_case(Case * c,int x, int y, Type_Terrain *t){
+Case * init_case(Case * c,int x, int y, Terrain *t){
     c->coord_x=x;
     c->coord_y=y;
     c->terrain=t;
@@ -69,7 +39,7 @@ void marquer_libre(Case *c){
     c->occupee=faux;
 }
 
-Type_Terrain* get_terrain(Case *c){
+Terrain* get_terrain(Case *c){
     if (c->terrain==NULL){
         fprintf(stderr,"pas de terrain");
     }
diff --git a/src/case.h b/src/case.h
index c0c56ef..fe44797 100644
--- a/src/case.h
+++ b/src/case.h
@@ -1,7 +1,6 @@
 #ifndef CASE_H_INCLUDED
 #define CASE_H_INCLUDED
 
-#include "CasesXML.h"
 #include "structures.h"
 
 Case* Librairie_Cases(const char *filename);
@@ -9,7 +8,7 @@ Case* Librairie_Cases(const char *filename);
 Case* Remplir_Cases_log(const char *filename);
 
 
-Case* init_case(Case *c,int x, int y, Type_Terrain *t);
+Case* init_case(Case *c,int x, int y, Terrain *t);
 
 int get_x(Case *c);
 
@@ -17,9 +16,9 @@ int get_y(Case *c);
 
 boolean est_occupee(Case *c);
 
-Type_Terrain * init_terrain(Type_Terrain * t, char * n, boolean f, unsigned short int PD);
+Terrain * init_terrain(Terrain * t, char * n, boolean f, unsigned short int PD);
 
-boolean terrain_franchissable(Type_Terrain *t);
+boolean terrain_franchissable(Terrain *t);
 
 boolean case_franchissable(Case *c);
 
@@ -27,7 +26,7 @@ void marquer_occupee(Case *c);
 
 void marquer_libre(Case *c);
 
-Type_Terrain* get_terrain(Case *c);
+Terrain* get_terrain(Case *c);
 
 int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur);
 
diff --git a/src/classe.h b/src/classe.h
index e810a95..ea3b197 100644
--- a/src/classe.h
+++ b/src/classe.h
@@ -2,7 +2,7 @@
 #define CLASSE_H_INCLUDED
 
 #include "structures.h"
-/*#include "ClassesXML.h"*/
+#include "ClassesXML.h"
 
 
 Classe* Librairie_Classes(const char *filename);
diff --git a/src/main.c b/src/main.c
index 2961e02..4c1b4dd 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3,6 +3,7 @@
 #include "structures.h"
 #include "classe.h"
 #include "case.h"
+#include "terrain.h"
 
 int init_jeu(){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */
    FILE *fichier;
@@ -16,7 +17,7 @@ int init_jeu(){ /* cr
 
 int main()
 {
-/* --------------------------- Test de lecture XML ------------------------------------------------- */
+/* --------------------------- Test de lecture XML Classes ------------------------------------------------- */
 /*
     int i = 0;
     printf("Test compilation");
@@ -29,6 +30,23 @@ int main()
 
 */
 
+/* --------------------------- Test de lecture XML Cases ------------------------------------------------- */
+
+
+    Librairie_Terrains("Terrains.xml");
+
+/*
+
+    int i = 0;
+    printf("Test compilation");
+    for(i=0;i<1;i++){
+        printf("\nPD_requis %d vaut: %s",i,Remplir_Terrains("Terrains.xml")[i].PD_requis);
+        printf("\nFR %d vaut : %d",i,Remplir_Classes_log("Terrains.xml")[i].PV_max);
+        printf("\nFRS %d vaut: %d",i,Remplir_Classes_log("Terrains.xml")[i].mana_max);
+        printf("\nPDR %d vaut: %d\n",i,Remplir_Classes_log("Terrains.xml")[i].points_deplacement_max);
+    }
+*/
+
 
 return 0;
 }
diff --git a/src/structures.h b/src/structures.h
index b4d56ab..fa3f023 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -35,12 +35,12 @@ typedef enum {faux, vrai} boolean;
 /*! \struct Type_terrain structures.h
  * \brief Definition de la structure Type_terrain
  */
-typedef struct Type_Terrain{
-    char nomTerrain[TAILLE_NOMS];/*!< Nom du terrain. */
+typedef struct Terrain{
+    char nomTerrain[1];/*!< Nom du terrain. */
     boolean franchissable;/*!< Le terrain est franchissable ou non par un personnage. */
     boolean franchissable_sorts;/*!< Le terrain est franchissable ou non par un sort. */
     unsigned short int PD_requis;/*!< Nombre de PD requis pour traverser le terrain. */
-}Type_Terrain;
+}Terrain;
 
 /*! \struct Case structures.h
  * \brief Definition de la structure Case
@@ -48,7 +48,7 @@ typedef struct Type_Terrain{
 typedef struct Case{
     unsigned short int coord_x; /*!< Abscisse de la case*/
     unsigned short int coord_y; /*!< Ordonnee de la case*/
-    Type_Terrain * terrain; /*!< Le type de terrain de la case*/
+    Terrain * terrain; /*!< Le type de terrain de la case*/
     boolean occupee; /*!< La case est occupee ou non par un personnage*/
 } Case;
 
diff --git a/src/terrain.c b/src/terrain.c
index 2f88851..dea7bed 100644
--- a/src/terrain.c
+++ b/src/terrain.c
@@ -1,19 +1,46 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include "structures.h"
-#include "case.h"
-#include "personnage.h"
-#include "deplacements.h"
+#include "terrain.h"
 
-boolean terrain_franchissable(Type_Terrain *t){
+
+/* Procédure de remplissage des cases à partir d'un fichier XML */
+Terrain* Librairie_Terrains(const char *filename)
+{
+    return Remplir_Terrains_log(filename);
+}
+
+
+/* Generation d'un fichier log decrivant le deroulement de la procedure d'aquisition des terrains */
+Terrain* Remplir_Terrains_log(const char *filename)
+{
+
+    FILE* Terrains_log = NULL;
+    Terrains_log = fopen("Terrains_XML_log", "w");
+    if (Terrains_log != NULL)
+    {
+        fprintf(Terrains_log,"Fichier decrivant le deroulement de la procedure d'aquisition des Terrains\n\n");
+        return Remplir_Terrains(Terrains_log, filename);
+        fclose(Terrains_log);
+    }
+    else
+    {
+        fprintf(stderr,"Impossible d'ouvrir le fichier Terrains_XML_log");
+        return 0;
+    }
+}
+
+
+
+
+boolean terrain_franchissable(Terrain *t){
     return t->franchissable;
 }
 
-Type_Terrain * init_terrain(Type_Terrain * t, char * n, boolean f, unsigned short int PD){
+Terrain * init_terrain(Terrain * t, char * n, boolean f, unsigned short int PD){
     t->franchissable=f;
     strncpy(n,t->nomTerrain,TAILLE_NOMS-1);
-    t->nomTerrain[TAILLE_NOMS-1]='/0';
+    t->nomTerrain[0]='/0';
     t->PD_requis=PD;
     return t;
 }
diff --git a/src/terrain.h b/src/terrain.h
new file mode 100644
index 0000000..5cf4d6f
--- /dev/null
+++ b/src/terrain.h
@@ -0,0 +1,21 @@
+#ifndef CLASSE_H_INCLUDED
+#define CLASSE_H_INCLUDED
+
+#include "structures.h"
+#include "personnage.h"
+#include "deplacements.h"
+#include "roxml.h"
+#include "TerrainsXML.h"
+
+Terrain* Librairie_Terrains(const char *filename);
+
+Terrain* Remplir_Terrains_log(const char *filename);
+
+
+boolean terrain_franchissable(Terrain *t);
+
+Terrain * init_terrain(Terrain * t, char * n, boolean f, unsigned short int PD);
+
+
+
+#endif // CLASSE_H_INCLUDED
-- 
GitLab