From e2245f309d8b7d0a11fa795257ca1a1630169d3e Mon Sep 17 00:00:00 2001 From: Romain Jegat <romain.jegat@insa-rennes.fr> Date: Sat, 2 Apr 2016 16:43:11 +0200 Subject: [PATCH] =?UTF-8?q?Fonction=20de=20remplissage=20d'un=20tableau=20?= =?UTF-8?q?avec=20les=20classes=20XML=20termin=C3=A9=20pour=203=20argument?= =?UTF-8?q?s=20(reste=20=C3=A0=20venir)=20-=20Vous=20pouvez=20d=C3=A9sorma?= =?UTF-8?q?is=20acc=C3=A9der=20directement=20aux=20PV,=20PM=20et=20PD=20de?= =?UTF-8?q?=20la=20i=C3=A8me=20classe=20du=20fichier=20XML=20dans=20le=20m?= =?UTF-8?q?ain,=20en=20d=C3=A9commentant=20ce=20que=20j'y=20ai=20laiss?= =?UTF-8?q?=C3=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/ClassesXML.c | 88 ++++++++++++++++++++++++++++-------------------- src/ClassesXML.h | 2 +- src/classe.c | 10 +++--- src/classe.h | 4 +-- src/main.c | 22 ------------ 5 files changed, 60 insertions(+), 66 deletions(-) delete mode 100644 src/main.c diff --git a/src/ClassesXML.c b/src/ClassesXML.c index 450a2b5..b25513f 100644 --- a/src/ClassesXML.c +++ b/src/ClassesXML.c @@ -2,45 +2,59 @@ #include <stdlib.h> #include <roxml.h> #include "ClassesXML.h" -#include "structures.h" -Classe** Remplir_Classes(const char *filename) // Remplit le tableau de classes à partir du fichier XML +Classe* Remplir_Classes(FILE* Classes_log, const char *filename) /* Remplit le tableau de classes à partir du fichier XML */ { + fprintf(Classes_log,"I) Chargement du fichier XML - Definition des noeuds\n"); - node_t *root, *Classes; + node_t *rootXML, *ClassesXML; unsigned int i=0, nb_classes=0; - char PV_text; /* a supprimer */ + rootXML = roxml_load_doc(filename); /* Ouvre le doc XML et créé le noeud de base */ + ClassesXML = roxml_get_chld(rootXML, NULL, 0); /* Descend d'un niveau dans l'arborescence */ + nb_classes = roxml_get_chld_nb(ClassesXML); /* Récupère le nombre de classes entrées dans le fichier XML */ - root = roxml_load_doc(filename); /* Ouvre le doc XML et créé le noeud de base */ - Classes = roxml_get_chld(root, NULL, 0); /* Descend d'un niveau dans l'arborescence */ - nb_classes = roxml_get_chld_nb(Classes); /* Récupère le nombre de classes entrées dans le fichier XML */ - printf("Classes contient %d enfants\n", nb_classes); + fprintf(Classes_log,"Le fichier contient %d classes\n", nb_classes); +/*---------------------------------------------------------------------------------------------------*/ + fprintf(Classes_log,"II) Chargement des classes\n"); - printf("Chargement des classes\n"); - Classe** ListeClasse = malloc(nb_classes * sizeof(Classe)); + Classe* ListeClasse = NULL; + ListeClasse = malloc(nb_classes * sizeof(Classe)); /* Allocation de la mémoire nécéssaire et test*/ + if (ListeClasse == NULL) + { + fprintf(Classes_log,"Allocation impossible \n"); + exit(EXIT_FAILURE); + } + fprintf(Classes_log,"1) Memoire allouee avec succes \n"); + fprintf(Classes_log,"La memoire allouee fait %d octets\n", ListeClasse); + fprintf(Classes_log,"Elle devrait faire %d octets\n",nb_classes * sizeof(Classe)); + +/*--------------------------------------------------------------------------------------------------*/ for(i=0; i<nb_classes; i++) /* Boucle de remplissage des classes */ { + fprintf(Classes_log,"\nChargement de la classe numero %d\n", i+1); + Classe Classe_en_cours; - node_t *Classe; + + node_t *ClasseXML; char *id_text, *name_text, *PV_text, *PM_text, *MV_text, *DESC_text; - int Pv_max, mana_max, points_deplacement_max; + int PV_int, PMM_int, PD_int; - Classe = roxml_get_chld(Classes, NULL, i); + ClasseXML = roxml_get_chld(ClassesXML, NULL, i); node_t *Skills, *ID, *NAME, *PV, *PM, *MV, *DESC; - ID = roxml_get_attr(Classe, "id", 0); - NAME = roxml_get_attr(Classe, "name", 0); - PV = roxml_get_attr(Classe, "PV", 0); - PM = roxml_get_attr(Classe, "PM", 0); - MV = roxml_get_attr(Classe, "MV", 0); - DESC = roxml_get_attr(Classe, "Desc", 0); + ID = roxml_get_attr(ClasseXML, "id", 0); + NAME = roxml_get_attr(ClasseXML, "name", 0); + PV = roxml_get_attr(ClasseXML, "PV", 0); + PM = roxml_get_attr(ClasseXML, "PM", 0); + MV = roxml_get_attr(ClasseXML, "MV", 0); + DESC = roxml_get_attr(ClasseXML, "Desc", 0); id_text = roxml_get_content(ID, NULL, 0, NULL); name_text = roxml_get_content(NAME, NULL, 0, NULL); @@ -48,34 +62,36 @@ Classe** Remplir_Classes(const char *filename) // Remplit le tableau de classe PM_text = roxml_get_content(PM, NULL, 0, NULL); MV_text = roxml_get_content(MV, NULL, 0, NULL); DESC_text = roxml_get_content(DESC, NULL, 0, NULL); -/* - printf("L'id est : %s\n", id_text); - printf("Le nom est : %s\n", name_text); - printf("Le nombre de PV est : %s\n", PV_text); - printf("Le nombre de PM est : %s\n", PM_text); - printf("Le nombre MV est : %s\n", MV_text); - printf("La description est : %s\n", DESC_text); -*/ + + fprintf(Classes_log,"Id : %s\n", id_text); + fprintf(Classes_log,"Nom : %s\n", name_text); + fprintf(Classes_log,"PV : %s\n", PV_text); + fprintf(Classes_log,"PM : %s\n", PM_text); + fprintf(Classes_log,"MV : %s\n", MV_text); + fprintf(Classes_log,"DESC : %s\n", DESC_text); /* Convertion des caractéristiques lues vers les types de la struct Classe */ - Pv_max = atoi(PV_text); - mana_max = atoi(PM_text); - points_deplacement_max = atoi(MV_text); + PV_int = atoi(PV_text); + PMM_int = atoi(PM_text); + PD_int = atoi(MV_text); +/*----------------------------------------------------------------------------------------------------*/ /* Remplissage des caractéristiques de la classe en cours */ - Classe_en_cours.PV_max=Pv_max; - Classe_en_cours.mana_max=mana_max; - Classe_en_cours.points_deplacement_max=points_deplacement_max; + Classe_en_cours.PV_max=PV_int; + Classe_en_cours.mana_max=PMM_int; + Classe_en_cours.points_deplacement_max=PD_int; + fprintf(Classes_log,"Insertion de la classe %d dans le tableau\n", i+1); /* Ajout de la classe remplie au tableau */ - + ListeClasse[i] = Classe_en_cours; } -roxml_free_node(Classes); +roxml_free_node(rootXML); +roxml_free_node(ClassesXML); -return ListeClasse; +return ListeClasse; } diff --git a/src/ClassesXML.h b/src/ClassesXML.h index f7a2610..06aa841 100644 --- a/src/ClassesXML.h +++ b/src/ClassesXML.h @@ -5,7 +5,7 @@ #include "classe.h" #include "structures.h" +Classe* Remplir_Classes(FILE* Classes_log, const char *filename); -Classe** Remplir_Classes(const char *filename); #endif // CLASSESXML_H_INCLUDED diff --git a/src/classe.c b/src/classe.c index aeab4f2..c890c93 100644 --- a/src/classe.c +++ b/src/classe.c @@ -6,29 +6,29 @@ -Classe** Librairie_Classes(const char *filename){ +Classe* Librairie_Classes(const char *filename){ +return Remplir_Classes_log(filename); -Remplir_Classes_log(filename); - -return NULL; } /* Generation d'un fichier log decrivant le deroulement de la procedure d'aquisition des classes */ -Classe** Remplir_Classes_log(const char *filename) /* Remplit le tableau de classes à partir du fichier XML */ +Classe* Remplir_Classes_log(const char *filename) { FILE* Classes_log = NULL; Classes_log = fopen("Classes_XML_log", "w"); if (Classes_log != NULL) { + fprintf(Classes_log,"Fichier decrivant le deroulement de la procedure d'aquisition des classes\n\n"); return Remplir_Classes(Classes_log, filename); fclose(Classes_log); } else { fprintf(stderr,"Impossible d'ouvrir le fichier Classes_XML_log"); + return 0; } } diff --git a/src/classe.h b/src/classe.h index bd8372f..e652534 100644 --- a/src/classe.h +++ b/src/classe.h @@ -5,8 +5,8 @@ //#include "ClassesXML.h" -Classe** Librairie_Classes(const char *filename); +Classe* Librairie_Classes(const char *filename); -Classe** Remplir_Classes_log(const char *filename); +Classe* Remplir_Classes_log(const char *filename); #endif // CLASSE_H_INCLUDED diff --git a/src/main.c b/src/main.c deleted file mode 100644 index f49f29b..0000000 --- a/src/main.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include "structures.h" -#include "AffichageConsole.h" -#include "joueur.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() -{ - - return 0; -} - -- GitLab