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

Lecture de map par XML - non fonctionel : Taille de lignes variables ?

parent 3cd6d776
No related branches found
No related tags found
No related merge requests found
Pipeline #
<?xml version="1.0" encoding="UTF-8"?>
<Maps>
<Map id="MAP_1" name="Comté de la sieste" desc="Cette map est so-mmeil" taille_lignes="10">
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
</Map>
<Map id="MAP_2" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10">
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
</Map>
<Map id="MAP_3" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10">
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
<Line>FFMMMF</Line>
</Map>
</Maps>
......@@ -2,6 +2,8 @@
#include <stdlib.h>
#include <string.h>
#include "carte.h"
#include "structures.h"
#include <roxml.h>
/*!
......@@ -20,7 +22,7 @@ char* ExtraireCarte(int numero)
* \fn Carte* LireCarte(int num)
* \brief La fonction recupere la n-ieme carte dans un fichier et renvoie un pointeur sur la carte cree
*
* \return Un pointeur sur une tableau de lettres.
* \return Un pointeur sur une tableau de cartes.
*/
char* LireCarte(const char *filename, int num)
{
......@@ -64,17 +66,87 @@ char* LireCarte(const char *filename, int num)
fgetc(file_map);
}
/* Test Tableau
/* Test Tableau
for(j=0; j<nb_lignes*nb_colonnes; j++)
{
printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]);
}
for(j=0; j<nb_lignes*nb_colonnes; j++)
{
printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]);
}
fclose(file_map);
*/
fclose(file_map);
*/
return TableauCarte;
}
Carte_A* ExtraireCartesXML(const char *filename)
{
node_t *rootXML, *Maps;
int nb_Maps=0, i=0;
rootXML = roxml_load_doc(filename);
Maps = roxml_get_chld(rootXML, NULL, 0);
nb_Maps = roxml_get_chld_nb(Maps);
printf("Il y a %d maps\n", nb_Maps);
Carte_A* Tableau_Cartes = malloc(nb_Maps * sizeof(Carte_A));
/*-------------------------------------------------------------------------------------------------------------------*/
/* Aquisition des cartes */
/*-------------------------------------------------------------------------------------------------------------------*/
for(i=0; i<nb_Maps; i++)
{
int j=0, nb_lignes=0, taille_lignes;
char *id_text, *name_text, *desc_text, *lignes_text;
node_t *Map_Actuelle;
Map_Actuelle = roxml_get_chld(Maps,NULL,i);
id_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "id", 0), NULL, 0, NULL);
name_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "name", 0), NULL, 0, NULL);
desc_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "desc", 0), NULL, 0, NULL);
taille_lignes = atoi(roxml_get_content(roxml_get_attr(Map_Actuelle, "taille_lignes", 0), NULL, 0, NULL));
printf("Les lignes font %d de long\n", taille_lignes);
nb_lignes = roxml_get_chld_nb(Map_Actuelle);
Carte_A Carte_Actuelle;
strcpy(Carte_Actuelle.id, id_text);
strcpy(Carte_Actuelle.nom, name_text);
strcpy(Carte_Actuelle.desc, desc_text);
printf("L'ID est :%s\n\n", Carte_Actuelle.id);
printf("Le nom est :%s\n\n", Carte_Actuelle.nom);
printf("La desc est :%s\n\n", Carte_Actuelle.desc);
/*--------------------------------------------------------------------------------------------------------------*/
/* Aquisition des lignes de la carte */
/*--------------------------------------------------------------------------------------------------------------*/
for(j=0; j<nb_lignes; j++)
{
node_t* Ligne_Actuelle;
Ligne_Actuelle = roxml_get_chld(Map_Actuelle, NULL, j);
char* sequence_ligne;
roxml_get_content(Ligne_Actuelle, sequence_ligne, 50, NULL);
printf("Sequence_Ligne vaut : %s\n", sequence_ligne);
// strcpy(Carte_Actuelle.lignes[j], sequence_ligne);
//printf("La ligne %d vaut : %s\n",j+1, Carte_Actuelle.lignes[j]);
}
Tableau_Cartes[i] = Carte_Actuelle;
}
return Tableau_Cartes;
}
......@@ -3,15 +3,17 @@
* \brief Fichier contenant les signatures des fonctions liees a la structure carte.
*/
char* ExtraireCarte(int numero);
char* LireCarte(const char *filename, int num);
#ifndef CARTE_H_INCLUDED
#define CARTE_H_INCLUDED
#include "structures.h"
char* ExtraireCarte(int numero);
Carte_A* ExtraireCartesXML(const char *filename);
char* LireCarte(const char *filename, int num);
#endif // CARTE_H_INCLUDED
......@@ -112,6 +112,7 @@ int main()
char *Map_A = ExtraireCarte(4);
printf("Map en version texte : %s\n", Map_A);
//ExtraireCartesXML("../resources/Maps.xml");
Game_Package Pack_A = Construire_Package();
......@@ -119,7 +120,7 @@ int main()
/* Comment utiliser le package : */
/* -------------------------------------*/
printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[0].nom);
printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[1].attaques[2].nom);
printf("Le nom du terrain 1 est : %s\n",Pack_A.Terrains_Package[0].nomTerrain);
printf("L'adresse de la texture GUI 1 est : %s\n",Pack_A.GUI_Package[0].GUI_default);
......
......@@ -20,6 +20,8 @@
/*! \def TAILLE_MAX_CARTE */
#define TAILLE_MAX_CARTE 256
/*! \def TAILLE_MAX_LIGNE */
#define TAILLE_MAX_LIGNE 25
/*! \def TAILLE_ID */
#define TAILLE_ID 8
/*! \def TAILLE_NOMS */
......@@ -166,6 +168,14 @@ typedef struct Effet_Competence{
} Effet_Competence;
typedef struct Carte_A{
char id[TAILLE_ID];
char nom[50];
char desc[100];
char* lignes;
} Carte_A;
/*! \struct Classe structures.h
* \brief Definition de la structure Game_Package
* sizeof(Classe) =
......@@ -174,6 +184,7 @@ typedef struct Game_Package{
Classe* Classes_Package;
Terrain* Terrains_Package;
Skins_GUI* GUI_Package;
Carte_A* Cartes_Package;
}Game_Package;
......@@ -223,7 +234,8 @@ typedef struct Game_Package{
* Peut eventuellement contenir l'information Carte si c'est utile.
* sizeof(Partie) = 12 octets
*/
typedef struct Partie{
typedef struct Partie{
ListJoueur * participants; /*!< La liste de joueurs prennant parts à la partie*/
int nbTours; /*!<Le nombre de tours actuel*/
Carte * c; /*!<La Carte associee a la Partie*/
......
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