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

Avancement sur les fonctions de récupération et de construction des arbres -...

Avancement sur les fonctions de récupération et de construction des arbres - Ca ne marche pas - Comportements étranges de CodeBlocks...
parent c1fd2b88
No related branches found
No related tags found
No related merge requests found
Pipeline #
......@@ -3,49 +3,49 @@
<Arbres>
<Arbre id="S_MAGE">
<Competence_E1 id="S_MAGE_1" nom="Creer Mage">
<Competence_E2 id="S_MAGE_11" nom="Instinct de survie">
<Competence_E3 id="S_MAGE_111" nom="Echo">
<Competence_E4 id="S_MAGE_1111" nom="Glaçon vivant">
<Competence_E1 id="S_MAGE_1" nom="Creer Mage" prix="1">
<Competence_E2 id="S_MAGE_11" nom="Instinct de survie" prix="1">
<Competence_E3 id="S_MAGE_111" nom="Echo" prix="1">
<Competence_E4 id="S_MAGE_1111" nom="Glaçon vivant" prix="1">
</Competence_E4>
</Competence_E3>
<Competence_E3 id="S_MAGE_112" nom="Transfert">
<Competence_E3 id="S_MAGE_112" nom="Transfert" prix="1">
</Competence_E3>
</Competence_E2>
<Competence_E2 id="S_MAGE_12" nom="Accro au Mana">
<Competence_E3 id="S_MAGE_121" nom="Feu intérieur">
<Competence_E4 id="S_MAGE_1211" nom="Compte au Panama">
<Competence_E2 id="S_MAGE_12" nom="Accro au Mana" prix="1">
<Competence_E3 id="S_MAGE_121" nom="Feu intérieur" prix="1">
<Competence_E4 id="S_MAGE_1211" nom="Compte au Panama" prix="1">
</Competence_E4>
<Competence_E4 id="S_MAGE_1212" nom="Cercle de feu">
<Competence_E4 id="S_MAGE_1212" nom="Cercle de feu" prix="1">
</Competence_E4>
</Competence_E3>
<Competence_E3 id="S_MAGE_122" nom="Plein aux as">
<Competence_E4 id="S_MAGE_1222" nom="Doublé gagnant">
<Competence_E3 id="S_MAGE_122" nom="Plein aux as" prix="1">
<Competence_E4 id="S_MAGE_1222" nom="Doublé gagnant" prix="1">
</Competence_E4>
</Competence_E3>
</Competence_E2>
</Competence_E1>
</Arbre>
</Competence_E1>
</Arbre>
<Arbre id="S_WAR">
<Arbre id="S_WAR">
</Arbre>
</Arbre>
<Arbre id="S_HEAL">
<Arbre id="S_HEAL">
</Arbre>
</Arbre>
<Arbre id="S_ROGUE">
<Arbre id="S_ROGUE">
</Arbre>
</Arbre>
<Arbre id="S_ARCHER">
<Arbre id="S_ARCHER">
</Arbre>
</Arbre>
......
#include <stdio.h>
#include <stdlib.h>
#include <roxml.h>
#include "structures.h"
#include "competence.h"
/*!
* \file competence.c
* \brief Fichier contenant le code des fonctions liees aux arbres de compétences.
......@@ -22,13 +24,6 @@ typedef struct Competence{
*/
/* Arbre manuel */
Competence comp_1;
Competence comp_11;
Competence comp_12;
Competence comp_111;
Competence comp_112;
Competence comp_121;
/*!
* \fn int set_Enfant(Competence *parent, Competence *enfant)
......@@ -41,19 +36,30 @@ int set_Enfant(Competence *parent, Competence *nouvel_enfant)
if(estVide(parent))
{
parent->enfant = nouvel_enfant;
}else{
}
/* else
{
Competence *enfant = parent->enfant;
while(enfant!=NULL)
{
enfant = enfant->frere; // A FINIR
enfant = enfant->frere;
}
enfant->frere = nouvel_enfant;
}
}*/
return 0;
}
int set_comp_name(Competence *comp, char *nom_donne)
{
strcpy(comp->nomComp, nom_donne);
}
int set_comp_id(Competence *comp, char *nom_donne)
{
strcpy(comp->id, nom_donne);
}
/*!
* \fn int init_Competence(Competence *noeud)
......@@ -63,18 +69,18 @@ int set_Enfant(Competence *parent, Competence *nouvel_enfant)
*/
int init_Competence(Competence *noeud)
{
noeud->nomComp[0] = '\0';
noeud->id[0] = '\0';
memset(noeud->nomComp, 0, sizeof(noeud->nomComp));
memset(noeud->id, 0, sizeof(noeud->id));
noeud->prix_competence = 0;
noeud->frere = NULL;
noeud->enfant = NULL;
noeud->effet = NULL;
noeud->connu = 0;
return 0;
}
/*!
* \fn int taille(Competence *noeud)
* \brief La fonction renvoie le nombre d'enfants totaux d'une competence.
......@@ -106,10 +112,12 @@ unsigned int hauteur(Competence *noeud)
for (enfant = noeud->enfant; enfant != NULL; enfant = enfant->frere)
{
if (hauteur(enfant) > compteur)
compteur = 1 + hauteur(enfant);
compteur = 1 + hauteur(enfant);
}
return compteur;
}else{
}
else
{
return 0;
}
}
......@@ -150,7 +158,7 @@ boolean est_connue(Competence *c)
unsigned int NbEnfants(Competence *noeud)
{
unsigned int nb;
if (estVide(noeud))
if (estVide(noeud))
{
nb = 0;
}
......@@ -159,20 +167,14 @@ unsigned int NbEnfants(Competence *noeud)
Competence *enfant;
for(noeud->enfant; enfant!= NULL; enfant=enfant->frere);
nb++;
nb++;
}
return nb;
}
/* -------------------------------------------------------------------------------------- */
Competence* construire_arbre_competence(Competence* a){
return NULL;
}
int rafraichir_competences(Competence * a){
int rafraichir_competences(Competence * a)
{
return 0;
}
......@@ -195,10 +197,120 @@ boolean est_complet(Competence *noeud)
return 1;
}
int chemin_auto_competence(Competence* c){ /* Renvoie la liste des compétences non connues se trouvant sur le chemin d'une compétence sélectionnée */
int chemin_auto_competence(Competence* c) /* Renvoie la liste des compétences non connues se trouvant sur le chemin d'une compétence sélectionnée */
{
return 0;
}
Effet_Competence * get_effet(Competence *c){ /* Renvoie l'effet d'une competence */
Effet_Competence * get_effet(Competence *c) /* Renvoie l'effet d'une competence */
{
return c->effet;
}
Competence* Extraire_Arbres(char *filename)
{
node_t *rootXML, *Arbres;
char *id_text, *name_text;
int nb_Arbres=0, i_0=0;
rootXML = roxml_load_doc(filename);
Arbres = roxml_get_chld(rootXML,"Arbres",0);
nb_Arbres = roxml_get_chld_nb(Arbres);
printf("On a %d arbres de competences \n", nb_Arbres);
/* ---------------------------------------------------------------------------------------------- */
/* Extraction des arbres */
/* ---------------------------------------------------------------------------------------------- */
for(i_0=0; i_0<nb_Arbres; i_0++)
{
node_t *ArbreXML_Actuel = roxml_get_chld(Arbres, NULL, i_0);
Competence *Arbre_Actuel;
int nb_Comp1=0, i_1=0;
init_Competence(Arbre_Actuel);
nb_Comp1 = roxml_get_chld_nb(ArbreXML_Actuel);
printf("L'arbre %d contient %d competences de niveau 1\n",i_0, nb_Comp1);
set_comp_name(Arbre_Actuel,roxml_get_content(roxml_get_attr(ArbreXML_Actuel,"id",0),NULL,0,NULL));
printf("L'arbre actuel a pour nom : %s\n", Arbre_Actuel->nomComp);
/* ---------------------------------------------------------------------------------------------- */
/* Extraction des competences 1 */
/* ---------------------------------------------------------------------------------------------- */
for(i_1=0; i_1<nb_Comp1; i_1++)
{
node_t *CompetenceXML_1;
Competence *Competence_1;
int nb_Comp2=0, i_2=0;
init_Competence(Competence_1);
CompetenceXML_1 = roxml_get_chld(ArbreXML_Actuel, NULL, i_1);
nb_Comp2 = roxml_get_chld_nb(CompetenceXML_1);
printf("La competence numero %d de niveau 1 contient %d competences de niveau 2\n",i_1+1,nb_Comp2);
set_comp_name(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"nom",0),NULL,0,NULL));
for(i_2=0; i_2<nb_Comp1; i_2++)
{
}
/* La competence j devient un enfant de la competence i */
set_Enfant(Arbre_Actuel, Competence_1);
printf("L'enfant est : %s\n", Arbre_Actuel->enfant->nomComp);
}
}
return 0;
}
int Test_Competences()
{
char* nomTest = "LeNom";
printf("Debut Test Competences\n");
Competence *Comp_Test_Parent, *Comp_Test_Enfant;
/*
set_comp_name(Comp_Test_Parent, "Papa");
set_comp_id(Comp_Test_Parent, "ID_PA");
set_comp_name(Comp_Test_Enfant, "Bebe");
set_comp_id(Comp_Test_Enfant, "ID_BE");
init_Competence(Comp_Test_Parent);
init_Competence(Comp_Test_Enfant);
*/
/*Verif */
/* printf("Le nom est : %s\n", Comp_Test_Parent->nomComp);
printf("L'ID est : %s\n", Comp_Test_Parent->id);
printf("Le nom est : %s\n", Comp_Test_Enfant->nomComp);
printf("L'ID est : %s\n", Comp_Test_Enfant->id);
printf("Lol");
*/
//printf("On a : %d\n", Comp_Test_Parent->connu);
// set_Enfant(&Comp_Test_Parent, &Comp_Test_Enfant);
// printf("L'enfant de %s est : %s\n",Comp_Test_Parent.nomComp,Comp_Test_Enfant.nomComp);
// printf("L'id de l'enfant de %s est : %s\n",Comp_Test_Parent.nomComp,Comp_Test_Parent.enfant.nomComp);
return 0;
}
......@@ -5,6 +5,7 @@
#ifndef COMPETENCE_H_INCLUDED
#define COMPETENCE_H_INCLUDED
#include "competence.h"
/* Fonctions */
......
......@@ -119,11 +119,12 @@ int main()
/* Creation du package : */
/* -------------------------------------*/
Game_Package Pack_A = Construire_Package();
Game_Package Pack_A = Construire_Package();
Classe* Classes_Pack = Librairie_Classes("../resources/Classes.xml");
Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml");
Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml");
//Competence* Competences_Pack = Extraire_Arbres("../resources/Competences.xml");
Pack_A.Classes_Package = Classes_Pack;
......@@ -135,8 +136,7 @@ Pack_A.GUI_Package = GUI_Pack;
/* -------------------------------------*/
printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[2].nom);
printf("\nL'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].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);
printf("La ligne 3 de la map 1 est : %s\n",Pack_A.Cartes_Package[0].lignes[2]);
......@@ -144,15 +144,10 @@ Pack_A.GUI_Package = GUI_Pack;
/* -------------------------------------*/
/* -------------------------------------*/
main_SDL(Map_ANCIENNE_VERSION);
//main_SDL(Map_ANCIENNE_VERSION);
/* -------------------------------------*/
/* Comment utiliser le package : */
/* -------------------------------------*/
printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[0].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);
Test_Competences();
return 0;
......
......@@ -191,14 +191,16 @@ typedef struct Personnage{
* \brief Definition de la structure competence.
* sizeof(Competence) = 44 octets
*/
typedef struct Competence{
char nomComp[TAILLE_NOMS]; /*!< Nom de la competence de taille TAILLE_NOMS*/
char id[TAILLE_ID]; /*!< Un entier qui represente la competence*/
unsigned int prix_competence; /*!< Points a depenser pour acquerir la competence */
struct Competence *frere; /*!< Competence suivante sur le meme niveau */
struct Competence *enfant; /*!< Premier enfant de la competence */
struct Competence *frere; /*!< Competence suivante sur le meme niveau */
struct Effet_Competence *effet; /*!< Pointeur vers les effets de la competence */
boolean connu; /*!< La competence est connue ou non */
unsigned int connu; /*!< La competence est connue ou non */
}Competence;
......
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