diff --git a/resources/Maps.txt b/resources/Maps.txt new file mode 100644 index 0000000000000000000000000000000000000000..027cf65dd2d6de1278370837699c7f5af91b294a --- /dev/null +++ b/resources/Maps.txt @@ -0,0 +1,18 @@ +MAP1 10*16 + +PFMMMFFPPF +PFFFFFFPPF +PFPPPFFPPF +PFPPPFFPPF +PFPPFFFPPF +PFMMMFFPPF +PFMFFFFPPF +PFMMPFFPPF +PFPPPFFPPF +PFPPFFPPFP +PFFPPFFPPF +PFFFMFFPPF +PFPMMFFPPF +PFMMMFFPPF +PFFFPFFPPF +PFPPPPFPPF \ No newline at end of file diff --git a/src/carte.c b/src/carte.c index f26fc64231d0da31e71d66ccab93a7b2406a57b6..c529481b50d46893e0c1574f13c369349a8e77d2 100644 --- a/src/carte.c +++ b/src/carte.c @@ -1,6 +1,51 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> #include "carte.h" + /*! * \file carte.c * \brief Fichier contenant le code des fonctions liees aux cartes. */ + + +/*! + * \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. + */ +char* LireCarte(const char *filename, int num) +{ + FILE* file_map = NULL; + + char char_nb_lignes[2]="",char_nb_colonnes[2]=""; + int nb_lignes = 0, nb_colonnes = 0, i=0, j=0; + char map[10][16]; + + file_map = fopen(filename, "r"); + + fseek(file_map, 5, SEEK_SET); + (fgets(char_nb_lignes,3,file_map)); + nb_lignes = atoi(char_nb_lignes); + fseek(file_map, 1, SEEK_CUR); + (fgets(char_nb_colonnes,3,file_map)); + nb_colonnes = atoi(char_nb_colonnes); + + fseek(file_map, 4, SEEK_CUR); + + char * TableauCarte = NULL; + TableauCarte = malloc(nb_colonnes * nb_lignes * sizeof(char)); + + for(i=0;i<nb_colonnes;i++) + { + for(j=0;j<=nb_lignes;j++) + { + TableauCarte[nb_lignes*i+j]=fgetc(file_map); + } + } + + fclose(file_map); + return TableauCarte; +} diff --git a/src/carte.h b/src/carte.h index 8ab25c14e2c778d20ebf4b85535e7590632b02dd..39b31278f990ddd559c0914e4db619c2b92886b3 100644 --- a/src/carte.h +++ b/src/carte.h @@ -3,10 +3,14 @@ * \brief Fichier contenant les signatures des fonctions liees a la structure carte. */ +char* LireCarte(const char *filename, int num); + #ifndef CARTE_H_INCLUDED #define CARTE_H_INCLUDED +#include "structures.h" + #endif // CARTE_H_INCLUDED diff --git a/src/competence.c b/src/competence.c index 071ecb1ea1f13713d3701de79a275eccb024e271..2e180f78f60fd7a5a10b769db79d6117a30f1c18 100644 --- a/src/competence.c +++ b/src/competence.c @@ -22,6 +22,65 @@ 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) + * \brief La fonction ajoute un enfant à une competence. + * + * \return Un entier. + */ +int set_Enfant(Competence *parent, Competence *nouvel_enfant) +{ + if(estVide(parent)) + { + parent->enfant = nouvel_enfant; + }else{ + Competence *enfant = parent->enfant; + while(enfant!=NULL) + { + enfant = enfant->frere; // A FINIR + } + enfant->frere = nouvel_enfant; + + } + return 0; +} + + + +/*! + * \fn int init_Competence(Competence *noeud) + * \brief La fonction initialise une competence. + * + * \return Un entier. + */ +int init_Competence(Competence *noeud) +{ + noeud->nomComp[0] = '\0'; + noeud->id[0] = '\0'; + noeud->prix_competence = 0; + noeud->frere = NULL; + noeud->enfant = NULL; + noeud->effet = NULL; + + return 0; +} + + + +/*! + * \fn int taille(Competence *noeud) + * \brief La fonction renvoie le nombre d'enfants totaux d'une competence. + * + * \return Un entier positif. + */ int taille(Competence *noeud) { Competence *enfant; @@ -31,6 +90,13 @@ int taille(Competence *noeud) return compteur; } + +/*! + * \fn unsigned int hauteur(Competence *noeud) + * \brief La fonction indique la hauteur d'une competence dans l'arbre. + * + * \return Un entier positif. + */ unsigned int hauteur(Competence *noeud) { if (!estVide(noeud)) @@ -48,6 +114,12 @@ unsigned int hauteur(Competence *noeud) } } +/*! + * \fn int estVide(Competence *c) + * \brief La fonction indique si une competence n'a pas d'enfants. + * + * \return Un booleen. + */ int estVide(Competence *c) { if (c->enfant == NULL) @@ -56,12 +128,25 @@ int estVide(Competence *c) return 1; } + +/*! + * \fn boolean est_connue(Competence *c) + * \brief La fonction indique si une competence est connue ou non. + * + * \return Un booleen. + */ boolean est_connue(Competence *c) { return (c->connu); } +/*! + * \fn unsigned int * NbEnfants(Competence *noeud) + * \brief La fonction renvoie le nombre d'enfants d'une competence. + * + * \return Un entier positif. + */ unsigned int NbEnfants(Competence *noeud) { unsigned int nb; @@ -93,9 +178,21 @@ int rafraichir_competences(Competence * a){ - -boolean est_complet(Competence *a){ - return 0; +/*! + * \fn boolean * est_complet(Competence *noeud) + * \brief La fonction verifie si l'arbre est complet ou non. + * + * \return Un booleen. + */ +boolean est_complet(Competence *noeud) +{ + Competence *enfant; + for(noeud->enfant; enfant!= NULL; enfant=enfant->frere) + { + if(!est_complet(enfant)) + return 0; + } + 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 */ diff --git a/src/competence.h b/src/competence.h index 54bbe42e5e1a59e2e9a77e766d749f6a4800f41a..0ede77ece0bcb0bb448b15a6af608e683161226f 100644 --- a/src/competence.h +++ b/src/competence.h @@ -8,6 +8,8 @@ /* Fonctions */ +int init_Competence(Competence *noeud); + int taille(Competence *noeud); unsigned int NbEnfants(Competence *noeud); diff --git a/src/main.c b/src/main.c index 558af27d8b9e7c01f7b07dbcda0d94a1c50d0af6..cd2326cbd26180e66aaf5f9e8362ae03149e0408 100644 --- a/src/main.c +++ b/src/main.c @@ -6,6 +6,7 @@ #include "terrain.h" #include "SDL.h" #include "roxml.h" +#include "carte.h" int init_jeu(const char *filename){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */ FILE *fichier_init; @@ -62,14 +63,20 @@ int init_jeu(const char *filename){ /* cr + int main() { +init_jeu("../resources/Init_jeu.xml"); + +/* Pour Henri <3 */ +/* +printf("La case choisie est : %c\n",LireCarte("../resources/Maps.txt",0)[50]); +*/ - init_jeu("../resources/Init_jeu.xml"); - main_SDL(); +main_SDL();