diff --git a/.gitignore b/.gitignore index 3062a35dc0111049a9b65f3ee2cd4d3bca5ec4fa..b09582c4bd7a8e6cb48c6b7ab63ea4a311e83eeb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,3 @@ *.o *.exe -*.depend -*.layout -*.cbp -!ElderInternalIgnition/ElderInternalIgnition.cbp -src/bin -src/obj - +build diff --git a/Taches.txt b/Taches.txt deleted file mode 100644 index 038a23821ae8aa63a25926c95ede391e75e070d8..0000000000000000000000000000000000000000 --- a/Taches.txt +++ /dev/null @@ -1 +0,0 @@ -Tâches à réaliser \ No newline at end of file diff --git a/build/.gitignore.txt b/build/.gitignore.txt deleted file mode 100644 index 8d4a6c08a83aaa5470f3c556faf2988be0ed1288..0000000000000000000000000000000000000000 --- a/build/.gitignore.txt +++ /dev/null @@ -1,2 +0,0 @@ -bin -obj \ No newline at end of file diff --git a/resources/Cases terrain/Thumbs.db b/resources/Cases terrain/Thumbs.db index 4b9f168cf4e8593c33cba85aef7844943b5a7c19..f5dd34a94264d5aad0330b8f2c49b32935681475 100644 Binary files a/resources/Cases terrain/Thumbs.db and b/resources/Cases terrain/Thumbs.db differ diff --git a/resources/Cases.xml b/resources/Cases.xml deleted file mode 100644 index c1c6f0564ab131b693d6d18a5baccc748d5bc9e9..0000000000000000000000000000000000000000 --- a/resources/Cases.xml +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<Cases> - <Case id="G_PLAIN" name="Plaine" FR="1" FRS="1" PDR="1" Desc="Plaine de bon sens"> - </Case> - <Case id="G_RIVER" name="Riviere" FR="0" FRS="1" PDR="0" Desc="River, arrete de river"> - </Case> - <Case id="G_FOREST" name="Foret" FR="1" FRS="1" PDR="2" Desc="Le frère de Fopart"> - </Case> - <Case id="G_MOUNT" name="Montagne" FR="0" FRS="0" PDR="0" Desc="Montagne est plus haut que tontagne"> - </Case> -</Cases> \ No newline at end of file diff --git a/resources/Maps.txt b/resources/Maps.txt new file mode 100644 index 0000000000000000000000000000000000000000..79cb99b30ad75a95b4b0010c1a936749b862cea4 --- /dev/null +++ b/resources/Maps.txt @@ -0,0 +1,78 @@ +MAP1 10*16 + +MFMMMFFPPF +PFFFFFFPPF +PFPPPFFPPF +PFPPPFFPPF +PFPPFFFPPF +PFMMMFFPPF +PFMFFFFPPF +PFMMPFFPPF +PFPPPFFPPF +PFPPFFPPFP +PFFPPFFPPF +PFFFMFFPPF +PFPMMFFPPF +PFMMMFFPPF +PFFFPFFPPF +PFPPPPFPPF + + +MAP2 10*16 + +FFMMMFFPPF +PFFFFFFPPF +PFPPPFFPPF +PFPPPFFPPF +PFPPFFFPPF +PFMMMFFPPF +PFMFFFFPPF +PFMMPFFPPF +PFPPPFFPPF +PFPPFFPPFP +PFFPPFFPPF +PFFFMFFPPF +PFPMMFFPPF +PFMMMFFPPF +PFFFPFFPPF +PFPPPPFPPF + + +MAP3 10*16 + +FFMMMFFPPF +PFFFFFFPPF +PFPPPFFPPF +PFPPPFFPPF +PFPPFFFPPF +PFMMMFFPPF +PFMFFFFPPF +PFMMPFFPPF +PFPPPFFPPF +PFPPFFPPFP +PFFPPFFPPF +PFFFMFFPPF +PFPMMFFPPF +PFMMMFFPPF +PFFFPFFPPF +PFPPPPFPPF + + +MAP4 10*16 + +FFMMMFFPPF +PFFFFFFPPF +PFPPPFFPPF +PFPPPFFPPF +PFPPFFFPPF +PFMMMFFPPF +PFMFFFFPPF +PFMMPFFPPF +PFPPPFFPPF +PFPPFFPPFP +PFFPPFFPPF +PFFFMFFPPF +PFPMMFFPPF +PFMMMFFPPF +PFFFPFFPPF +PFPPPPFPPF \ No newline at end of file diff --git a/resources/Talents.xml b/resources/Talents.xml deleted file mode 100644 index c0144a1b3bb30e18252e14273322cf3eade40a79..0000000000000000000000000000000000000000 --- a/resources/Talents.xml +++ /dev/null @@ -1,26 +0,0 @@ -<talents> - <talent name="talent1" id="1" desc="" kind="water" bli=""> - <childs> - <child name="talent4"/> - <child name="talent5"/> - </childs> - </talent> - <talent name="talent2" id="2" desc="" kind="wind" bli=""> - <childs> - <child name="talent3"/> - </childs> - </talent> - <talent name="talent3" id="3" desc="" bla="" bli=""> - <childs> - <child name="talent5"/> - </childs> - </talent> - <talent name="talent4" id="4" desc="" bla="" bli=""> - <childs> - </childs> - </talent> - <talent name="talent5" id="5" desc="" bla="" bli=""> - <childs> - </childs> - </talent> -</talents> diff --git a/resources/Thumbs.db b/resources/Thumbs.db index d2f48f0b750c8d1754f3df2c9a1b99ac5c2eba23..95640b3ac79fecd290ccd064b7e22f23410e8128 100644 Binary files a/resources/Thumbs.db and b/resources/Thumbs.db differ diff --git a/resources/archer.bmp b/resources/archer.bmp new file mode 100644 index 0000000000000000000000000000000000000000..511a7f2984b6b64f924d81b05f337c554fb053f9 Binary files /dev/null and b/resources/archer.bmp differ diff --git a/resources/case_brillante.bmp b/resources/case_brillante.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3404ed557f71b7478cb5452288a380eae35d46ac Binary files /dev/null and b/resources/case_brillante.bmp differ diff --git a/resources/eau.bmp b/resources/eau.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f32e899ea1291ecede87385caab8951bccb20d3e Binary files /dev/null and b/resources/eau.bmp differ diff --git a/resources/fichier_init.txt b/resources/fichier_init.txt deleted file mode 100644 index f23bb106ddf5a559267122b2fee9822057a0b7a7..0000000000000000000000000000000000000000 --- a/resources/fichier_init.txt +++ /dev/null @@ -1,55 +0,0 @@ -<listeterrains> -<terrain> -<nom>plaine</nom> -<franchissable>oui</franchissable> -<ptdep>1</ptdep> -</terrain> -<terrain> -<nom>eau</nom> -<franchissable>non</franchissable> -</terrain> -<terrain> -<nom>montagne</nom> -<franchissable>non</franchissable> -</terrain> -<terrain> -<nom>forêt</nom> -<franchissable>oui</franchissable> -<ptdep>2</ptdep> -</terrain> -</listeterrains> -<listeclasses> -<classe> -<nom>guerrier</nom> -<pv>150</pv> -<ptdep>2</ptdep> -<mana>100</mana> -<listeattaques> -<attaque> -<nom>coup d'épée</nom> -<degats>15</degats> -</attaque> -<attaque> -<nom>écorchure</nom> -<degatsduree>5</degatsduree> -</attaque> -</listeattaques> -</classe> -<classe> -<nom>mage</nom> -<pv>100</pv> -<ptdep>2</ptdep> -<mana>150</mana> -<listeattaques> -<attaque> -<nom>boule de feu</nom> -<degats>15</degats> -<degatsduree>5</degatsduree> -</attaque> -<attaque> -<nom>gel</nom> -<paralysie>oui</paralysie> -</attaque> -</listeattaques> -</classe> -</listeclasses> \ No newline at end of file diff --git a/resources/foret.bmp b/resources/foret.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ed15b2dfc38a584980251eae08a6cb111f809678 Binary files /dev/null and b/resources/foret.bmp differ diff --git a/resources/guerisseur.bmp b/resources/guerisseur.bmp new file mode 100644 index 0000000000000000000000000000000000000000..03c7a5eaf4ee88c26fb8b7cf027ea116c8ef3c71 Binary files /dev/null and b/resources/guerisseur.bmp differ diff --git a/resources/guerrier.bmp b/resources/guerrier.bmp new file mode 100644 index 0000000000000000000000000000000000000000..11ed07cf6b65083316421dcb3482bd0d6cb56787 Binary files /dev/null and b/resources/guerrier.bmp differ diff --git a/resources/mage.bmp b/resources/mage.bmp new file mode 100644 index 0000000000000000000000000000000000000000..3c7a265b7b8e0310fcbc535d5433643a84d26bb6 Binary files /dev/null and b/resources/mage.bmp differ diff --git a/resources/montagne.bmp b/resources/montagne.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7f9d39d2351285b70850afa38de5448b2481111a Binary files /dev/null and b/resources/montagne.bmp differ diff --git a/resources/normal2_brillant.bmp b/resources/normal2_brillant.bmp deleted file mode 100644 index 93b0bdfe431857f7793bc045fdc98a0d4844874a..0000000000000000000000000000000000000000 Binary files a/resources/normal2_brillant.bmp and /dev/null differ diff --git a/resources/personnage.bmp b/resources/personnage.bmp deleted file mode 100644 index b8d2370a77c2c3eda79bbcf9d6dc4834901c60ff..0000000000000000000000000000000000000000 Binary files a/resources/personnage.bmp and /dev/null differ diff --git a/resources/normal2.bmp b/resources/plaine.bmp similarity index 100% rename from resources/normal2.bmp rename to resources/plaine.bmp diff --git a/resources/voleur.bmp b/resources/voleur.bmp new file mode 100644 index 0000000000000000000000000000000000000000..69e6c110771d78061b420f0a612faa3adbe3efbd Binary files /dev/null and b/resources/voleur.bmp differ diff --git a/src/SDL.c b/src/SDL.c index 2aeca95df54f56d8e2245197aedf4195e71b39e9..07a4eb5e430c4166346257de7ff7b50b6a4e88cf 100644 --- a/src/SDL.c +++ b/src/SDL.c @@ -21,8 +21,15 @@ int main_SDL() int i,j; SDL_Surface* ecran=NULL; SDL_Event event; - SDL_Surface* perso[NB_PERSO]={NULL}; - SDL_Surface* Case=NULL; + SDL_Surface* guerrier=NULL; + SDL_Surface* mage=NULL; + SDL_Surface* voleur=NULL; + SDL_Surface* archer=NULL; + SDL_Surface* guerisseur=NULL; + SDL_Surface* plaine=NULL; + SDL_Surface* eau=NULL; + SDL_Surface* montagne=NULL; + SDL_Surface* foret=NULL; SDL_Surface* Case_brillante=NULL; SDL_Rect Position_Case[LARGEUR_CARTE*HAUTEUR_CARTE]; SDL_Rect Position_Perso[NB_PERSO]; @@ -46,28 +53,86 @@ int main_SDL() SDL_WM_SetCaption("Elder Internal Ignition",NULL); - perso[0] = SDL_LoadBMP("../resources/personnage.bmp"); - if (!perso[0]) + guerrier = SDL_LoadBMP("../resources/guerrier.bmp"); + if (!guerrier) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(guerrier, SDL_SRCCOLORKEY, SDL_MapRGB(guerrier->format, 0, 0, 255)); + + mage = SDL_LoadBMP("../resources/mage.bmp"); + if (!mage) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(mage, SDL_SRCCOLORKEY, SDL_MapRGB(mage->format, 0, 0, 255)); + + voleur = SDL_LoadBMP("../resources/voleur.bmp"); + if (!voleur) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(voleur, SDL_SRCCOLORKEY, SDL_MapRGB(voleur->format, 0, 0, 255)); + + + archer = SDL_LoadBMP("../resources/archer.bmp"); + if (!archer) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(archer, SDL_SRCCOLORKEY, SDL_MapRGB(archer->format, 0, 0, 255)); + + guerisseur = SDL_LoadBMP("../resources/guerisseur.bmp"); + if (!guerisseur) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(guerisseur, SDL_SRCCOLORKEY, SDL_MapRGB(guerisseur->format, 0, 0, 255)); + + plaine = SDL_LoadBMP("../resources/plaine.bmp"); + if (!plaine) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(plaine, SDL_SRCCOLORKEY, SDL_MapRGB(plaine->format, 0, 0, 255)); + + eau = SDL_LoadBMP("../resources/eau.bmp"); + if (!eau) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(eau, SDL_SRCCOLORKEY, SDL_MapRGB(eau->format, 0, 0, 255)); + + montagne = SDL_LoadBMP("../resources/montagne.bmp"); + if (!montagne) { printf("Unable to load bitmap: %s\n", SDL_GetError()); return 1; } - SDL_SetColorKey(perso[0], SDL_SRCCOLORKEY, SDL_MapRGB(perso[0]->format, 0, 0, 255)); - Case = SDL_LoadBMP("../resources/normal2.bmp"); - if (!Case) + SDL_SetColorKey(montagne, SDL_SRCCOLORKEY, SDL_MapRGB(montagne->format, 0, 0, 255)); + + foret = SDL_LoadBMP("../resources/foret.bmp"); + if (!foret) { printf("Unable to load bitmap: %s\n", SDL_GetError()); return 1; } - SDL_SetColorKey(Case, SDL_SRCCOLORKEY, SDL_MapRGB(Case->format, 0, 0, 255)); + SDL_SetColorKey(foret, SDL_SRCCOLORKEY, SDL_MapRGB(foret->format, 0, 0, 255)); - Case_brillante = SDL_LoadBMP("../resources/normal2_brillant.bmp"); + Case_brillante = SDL_LoadBMP("../resources/case_brillante.bmp"); if (!Case_brillante) { printf("Unable to load bitmap: %s\n", SDL_GetError()); return 1; } - SDL_SetColorKey(Case_brillante, SDL_SRCCOLORKEY, SDL_MapRGB(Case->format, 0, 0, 255)); + SDL_SetColorKey(Case_brillante, SDL_SRCCOLORKEY, SDL_MapRGB(Case_brillante->format, 0, 0, 255)); for(i=0;i<LARGEUR_CARTE;i+=2) { @@ -97,7 +162,7 @@ int main_SDL() quitter=1; break; case SDL_MOUSEBUTTONDOWN: - deplacement_personnage(0,event.button.x,event.button.y); + deplacement_personnage(event.button.x,event.button.y); break; case SDL_MOUSEMOTION: if(event.motion.x<LARGEUR_CARTE*LARGEUR_CASE&&event.motion.y<HAUTEUR_CARTE*HAUTEUR_CASE) @@ -108,6 +173,9 @@ int main_SDL() break; case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */ switch(event.key.keysym.sym){ + case SDLK_n: + persosuivant(); + break; case SDLK_ESCAPE: quitter=1; break; @@ -116,23 +184,35 @@ int main_SDL() } break; } - Position_Perso[0].x=get_position_perso_x(0); - Position_Perso[0].y=get_position_perso_y(0); + for(i=0;i<NB_PERSO;i++){ + Position_Perso[i].x=get_position_perso_x(i); + Position_Perso[i].y=get_position_perso_y(i); + } Position_Case_brillante.x=x_case_brillante; Position_Case_brillante.y=y_case_brillante; SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0)); for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++) { - SDL_BlitSurface(Case,NULL,ecran,&Position_Case[i]); + SDL_BlitSurface(plaine,NULL,ecran,&Position_Case[i]); } SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante); - SDL_BlitSurface(perso[0],NULL,ecran,&Position_Perso[0]); + for(i=0;i<NB_PERSO;i++) + { + SDL_BlitSurface(guerrier,NULL,ecran,&Position_Perso[i]); + } SDL_Flip(ecran); } quitter=0; - SDL_FreeSurface(Case); + SDL_FreeSurface(guerrier); SDL_FreeSurface(Case_brillante); - SDL_FreeSurface(perso[0]); + SDL_FreeSurface(plaine); + SDL_FreeSurface(mage); + SDL_FreeSurface(voleur); + SDL_FreeSurface(archer); + SDL_FreeSurface(guerisseur); + SDL_FreeSurface(eau); + SDL_FreeSurface(montagne); + SDL_FreeSurface(foret); SDL_Quit(); return 0; } diff --git a/src/SDL.h b/src/SDL.h index d1d7ade08eba5fb3f482617e11684351255b1a39..efc34f953da2cafaa6f1886bf00642fdad52853c 100644 --- a/src/SDL.h +++ b/src/SDL.h @@ -11,7 +11,7 @@ #define HAUTEUR_CARTE 10 #define LARGEUR_CASE 53 #define HAUTEUR_CASE 71 -#define NB_PERSO 1 +#define NB_PERSO 3 int main_SDL(); diff --git a/src/carte.c b/src/carte.c index f26fc64231d0da31e71d66ccab93a7b2406a57b6..b72e5b8a37625ee34f13e5aa6c77ddb8eaa6d6d7 100644 --- a/src/carte.c +++ b/src/carte.c @@ -1,6 +1,68 @@ +#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) +{ + char char_num_map[2],char_nb_lignes[2]="",char_nb_colonnes[2]=""; + int num_map = 0, nb_lignes = 0, nb_colonnes = 0, i=0, j=0, k=0; + FILE* file_map = NULL; + file_map = fopen(filename, "r"); + + fseek(file_map, 3, SEEK_SET); + (fgets(char_num_map,3,file_map)); + num_map = atoi(char_num_map); + (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); + + while(num_map < num) + { + for(k=0; k<nb_colonnes+4; k++) /*! Descend jusqu'à la prochaine map */ + { + fseek(file_map,nb_lignes,SEEK_CUR); + } + fseek(file_map, 3, SEEK_CUR); + (fgets(char_num_map,3,file_map)); + num_map = atoi(char_num_map); + (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..bc58c4cff4271ba2adf70c07cc06708b09a0e922 100644 --- a/src/carte.h +++ b/src/carte.h @@ -3,10 +3,13 @@ * \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/case.c b/src/case.c index a8622e554d5745cde1d452f23fc58c97a707b12b..19c89fbf60381e974526d835ce07e3dbfe5e92ad 100644 --- a/src/case.c +++ b/src/case.c @@ -67,23 +67,3 @@ int init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur){ } return 0; } - -/*! - * \fn Case * trouverCase(Carte * c, int x, int y) - * \brief La fonction renvoie un pointeur vers la case qui possede les coordonnees en entree. - * - * \param Les coordonnees a tester - * \return Un pointeur vers la Case qui possede les coordonnees en entree, NULL s'il n'y a pas de Case avec ces coordonnees. - */ - /* -Case * trouverCase(Carte * c, int x, int y){ - if((x<0)||(x>=LARG_MAX_CARTE)){ - return NULL; - } - else if((y<0)||(y>=HAUT_MAX_CARTE)){ - return NULL; - } - else{ - return c[(x*LARG_MAX_CARTE)+y]; - } -} */ 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/controleurSDL.c b/src/controleurSDL.c index fb1f44d96a9ea9b05ca61a269dfd197e68ca008e..6c31a89b0c26885eb54937893cda3964934d9a7b 100644 --- a/src/controleurSDL.c +++ b/src/controleurSDL.c @@ -18,6 +18,7 @@ Carte Carte_actuelle; Personnage ListePersos[NB_PERSO]; +int perso_actuel=0; void init_controleur(SDL_Rect Position_Case[]) @@ -27,7 +28,8 @@ void init_controleur(SDL_Rect Position_Case[]) { init_case(&Carte_actuelle[i],Position_Case[i].x,Position_Case[i].y,NULL); } - init_personnage(&ListePersos[0],NULL,&Carte_actuelle[0]); + for(i=0;i<NB_PERSO;i++) + init_personnage(&ListePersos[i],NULL,&Carte_actuelle[i]); } int x_case_cliquee(int x_pixel, int y_pixel) @@ -63,13 +65,19 @@ Case * trouverCase(Carte c, int x, int y) } } +persosuivant(){ + if(perso_actuel<NB_PERSO-1) + perso_actuel++; + else + perso_actuel=0; +} -void deplacement_personnage(int num, int x, int y) +void deplacement_personnage(int x, int y) { if(x<LARGEUR_CARTE*LARGEUR_CASE&&y<HAUTEUR_CARTE*HAUTEUR_CASE) { Case* case_cliquee = trouverCase(Carte_actuelle,x_case_cliquee(x,y),y_case_cliquee(x,y)); - Personnage* perso = &ListePersos[num]; + Personnage* perso = &ListePersos[perso_actuel]; if (case_a_cote(perso,case_cliquee,HAUTEUR_CASE,LARGEUR_CASE)==vrai) { deplacer_personnage(perso, case_cliquee); diff --git a/src/controleurSDL.h b/src/controleurSDL.h index fcd7168f2f517740e0f5ec921a162a147ad52344..41d571d4493d3d7b2e7412035bd698f94e7fd8e8 100644 --- a/src/controleurSDL.h +++ b/src/controleurSDL.h @@ -13,7 +13,7 @@ int x_case_cliquee(int x_pixel, int y_pixel); Case * trouverCase(Carte c, int x, int y); -void deplacement_personnage(int num, int x, int y); +void deplacement_personnage(int x, int y); Case* get_case_perso(int num); @@ -29,5 +29,7 @@ int get_position_case_y(Case * Case); int get_position_case_x(Case * Case); +void persosuivant(); + #endif diff --git a/src/main.c b/src/main.c index 558af27d8b9e7c01f7b07dbcda0d94a1c50d0af6..11dacdda2e37458376a2adbaf6bd2bab135c42b3 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,21 @@ int init_jeu(const char *filename){ /* cr + int main() { +init_jeu("../resources/Init_jeu.xml"); + + +main_SDL(); + +printf("La case choisie est : %c\n",LireCarte("../resources/Maps.txt",3)[10]); + - init_jeu("../resources/Init_jeu.xml"); - main_SDL(); +main_SDL();