From 3b920c69dfa36901a417342899e3b92acc07d39b Mon Sep 17 00:00:00 2001 From: ColinDrieu <colin.drieu@insa-rennes.fr> Date: Thu, 12 May 2016 18:52:01 +0200 Subject: [PATCH] =?UTF-8?q?Code=20des=20fonctions=20permettant=20d'acceder?= =?UTF-8?q?=20aux=20ressources=20et=20aux=20coordonn=C3=A9es=20d'un=20pers?= =?UTF-8?q?onnage=20en=20fonction=20de=20son=20num=C3=A9ro=20dans=20la=20S?= =?UTF-8?q?DL.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/controleur.c | 75 ++++++++++++++++++++++++++++++++++++++++++------ src/controleur.h | 2 ++ 2 files changed, 69 insertions(+), 8 deletions(-) diff --git a/src/controleur.c b/src/controleur.c index 6b2a7da..ccc6408 100644 --- a/src/controleur.c +++ b/src/controleur.c @@ -361,7 +361,6 @@ char * obtenirRessourcePersonnage(int x, int y){ int i; Joueur * actuel = NULL; char * ressource = malloc(TAILLE_CHEMIN*sizeof(char)); - ressource = NULL; //Test Personnage sur la case. if(!personnagePresent(x,y)){ return NULL; @@ -401,6 +400,63 @@ char * obtenirRessourcePersonnage(int x, int y){ } } + /*! + * \fn char * obtenirRessourcePersonnageNum(int numero) + * \brief La fonction renvoie la ressource d'un Personnage dont le numero est celui définit dans la sdl. + * + * \param Le numero du personnage definit dans la sdl. + * \return la ressource du personnage, NULL si le personnage n'est pas trouvé. + */ +char * obtenirRessourcePersonnageNum(int numero){ + Joueur * actuel = NULL; + char * ressource = malloc(TAILLE_CHEMIN*sizeof(char)); + actuel = getCurrentJoueur(getListJoueur(partieGlobale)); + + if ((numero>0)&&(numero<=3)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + strncpy(ressource,getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))->skins.charac_default,TAILLE_CHEMIN); + setOnJoueur(getListJoueur(partieGlobale),actuel); + return ressource; + } + else if ((numero>3)&&(numero<=6)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + nextJoueur(getListJoueur(partieGlobale)); + strncpy(ressource,getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))->skins.charac_default,TAILLE_CHEMIN); + setOnJoueur(getListJoueur(partieGlobale),actuel); + return ressource; + } + else{ + setOnJoueur(getListJoueur(partieGlobale),actuel); + return NULL; + } +} + + /*! + * \fn void * obtenirPositionPersonnage(int numero, int * x, int * y) + * \brief La fonction modifie les parrametres x et y en entrée en fonction des coordonnées du Personnage dont le numero en parrametre + * est celui définit dans la sdl. + * + * \param Le numero du personnage definit dans la sdl, des pointeurs vers des int x et y pour récupérer les coordonnées. + */ +void obtenirPositionPersonnage(int numero, int * x, int * y){ + Joueur * actuel = NULL; + actuel = getCurrentJoueur(getListJoueur(partieGlobale)); + + if ((numero>0)&&(numero<=3)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + *x=get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))); + *y=get_y(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))); + setOnJoueur(getListJoueur(partieGlobale),actuel); + } + else if ((numero>3)&&(numero<=6)){ + setOnFirstJoueur(getListJoueur(partieGlobale)); + nextJoueur(getListJoueur(partieGlobale)); + *x=get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))); + *y=get_y(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))); + setOnJoueur(getListJoueur(partieGlobale),actuel); + } +} + /*! * \fn Personnage * trouverPersonnage(Case * c) * \brief La fonction renvoie un pointeur vers le personnage présent sur la case en parrammetre. @@ -618,7 +674,7 @@ char ** obtenirNomsAttaquesPersonnage(int numero){ // Je met ici mes tests réalisés dans le main pour éviter de les réécrire si jamais il y a un problème. // Si vous voulez tester aussi, à recopier dans le main avant l'appel à initJeu(). void testControlleurConsole(){ - int i,j,n; + int i,j,n,x,y; EtatsJeu state = SAISIE_JOUEURS; extern Partie * partieGlobale; extern Game_Package packGlobal; @@ -664,13 +720,16 @@ void testControlleurConsole(){ else{ n=4+getIndicePersonnage((getListJoueur(partieGlobale)->lastNodeJoueur->j),trouverPersonnage(getCase(getCarte(partieGlobale),i,j))); } + obtenirPositionPersonnage(n,&x,&y); + printf("Position : %d:%d\n",x,y); printf("%s\n", obtenirNomClassePersonnage(n)); - printf("%s\n", obtenirPVPersonnage(n)); - printf("%s\n", obtenirPVMaxPersonnage(n)); - printf("%s\n", obtenirManaPersonnage(n)); - printf("%s\n", obtenirManaMaxPersonnage(n)); - printf("%s\n", obtenirPDPersonnage(n)); - printf("%s\n", obtenirPDMaxPersonnage(n)); + printf("%s\n", obtenirRessourcePersonnageNum(n)); + printf("%d\n", obtenirPVPersonnage(n)); + printf("%d\n", obtenirPVMaxPersonnage(n)); + printf("%d\n", obtenirManaPersonnage(n)); + printf("%d\n", obtenirManaMaxPersonnage(n)); + printf("%d\n", obtenirPDPersonnage(n)); + printf("%d\n", obtenirPDMaxPersonnage(n)); } } } diff --git a/src/controleur.h b/src/controleur.h index 7a9befa..c1b5452 100644 --- a/src/controleur.h +++ b/src/controleur.h @@ -36,6 +36,8 @@ char * ObtenirRessourceTerrain(int x, int y); int personnagePresent(int x, int y); char * obtenirRessourcePersonnage(int x, int y); +char * obtenirRessourcePersonnageNum(int numero); +void obtenirPositionPersonnage(int numero, int * x, int * y); Personnage * trouverPersonnage(Case * c); -- GitLab