diff --git a/src/ClassesXML.c b/src/ClassesXML.c index 450a2b5df5f5f6079d99879495aa552b26613a82..b25513f83176ef61a327de8026fc50b9a8f4fb67 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 f7a26102a14480b0a2aa132943fd71a3874f813b..06aa841261b3e19f2f6b0d135c6707915d98fc3a 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 aeab4f27afd6e40e8518197995976f229a6726a1..c890c932372c5c1ab77c02918fe2396285ee1ef9 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 bd8372f16a9911353678fbce721049dd77c9053e..e6525345f1ade2933e230257481c18656727b8f5 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 f49f29bb8907ff1e3d7d5b5634a8240a214ebe5b..0000000000000000000000000000000000000000 --- 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; -} -