Skip to content
Snippets Groups Projects
Commit e2245f30 authored by Romain Jegat's avatar Romain Jegat
Browse files

Fonction de remplissage d'un tableau avec les classes XML terminé pour 3...

Fonction de remplissage d'un tableau avec les classes XML terminé pour 3 arguments (reste à venir) - Vous pouvez désormais accéder directement aux PV, PM et PD de la ième classe du fichier XML dans le main, en décommentant ce que j'y ai laissé
parent d0689f3c
No related branches found
No related tags found
No related merge requests found
......@@ -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); /* Rcupre le nombre de classes entres 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); /* Rcupre le nombre de classes entres 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 mmoire ncssaire 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 caractristiques 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 caractristiques 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;
}
......@@ -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
......@@ -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;
}
}
......
......@@ -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
#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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment