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