diff --git a/src/affichage.c b/src/affichage.c index 6762c65f356779a0cadeedb6d5de2e924f97655e..b5e5ccfffed425bbafc11dc07a70ec46088b32ec 100644 --- a/src/affichage.c +++ b/src/affichage.c @@ -849,7 +849,7 @@ int affichage_carte() } if(event.button.x<LARGEUR_CARTE*LARGEUR_CASE) { - //deplacement_personnage(event.button.x,event.button.y); + deplacement_personnage(event.button.x,event.button.y); } break; case SDL_MOUSEMOTION: diff --git a/src/controleur.c b/src/controleur.c index aaa28adc460d05d6bac18c27a2efb0759496b859..bf16f048d67ea690a20abf4818475f27102139a2 100644 --- a/src/controleur.c +++ b/src/controleur.c @@ -510,6 +510,21 @@ char * obtenirNomJoueurCourant(){ return getNomJoueur(getCurrentJoueur(getListJoueur(partieGlobale))); } + + +void deplacement_personnage(int numPerso, int x_pixel, int y_pixel){ + int x=x_case_cliquee(x_pixel, y_pixel); + int y=y_case_cliquee(x_pixel, y_pixel); + if(numPerso<=NB_PERSO){ + deplacement_unitaire(getCurrentJoueur(getListJoueur(partieGlobale))->groupe[numPerso-1]); + } + else{ + deplacement_unitaire(getCurrentJoueur(getListJoueur(partieGlobale))->groupe[numPerso-1-NB_PERSO]); + } +} + + + /*! * \fn char * obtenirNomClassePersonnage(int numero) * \brief La fonction renvoie le nom de la classe du Personnage en parrametre. diff --git a/src/controleur.h b/src/controleur.h index 454e7405e3b03d37ef8ac1b3b454815322e865b6..faa33806000cc8322e256c150da8fb9679b805e6 100644 --- a/src/controleur.h +++ b/src/controleur.h @@ -21,7 +21,7 @@ char ** obtenirNomsClasses(); char ** obtenirSkinsClasses(); void freeClasses(char ** tab); - int nbCartes(); +int nbCartes(); char ** obtenirNomsCartes(); char ** obtenirDescriptionCarte(); void freeCartes(char **); diff --git a/src/deplacements.c b/src/deplacements.c index 36798111884ecf68e6cd6ce2f813ecc64c4465e4..7856374eca6647503754a6e35447008e3b6adcda 100644 --- a/src/deplacements.c +++ b/src/deplacements.c @@ -11,40 +11,40 @@ */ /*! - * \fn boolean case_a_cote(Personnage * perso, Case * destination,int hauteur_case , int largeur_case) + * \fn boolean case_a_cote(Personnage * perso, Case * destination) * \brief La fonction vérifie que la case hexagonale "destination" est contigue à la case du personnage * - * \param Un personnage, une case, deux entiers. + * \param Un personnage, une case * \return Un booleen. */ -boolean case_a_cote(Personnage * perso, Case * destination,int hauteur_case , int largeur_case){ +boolean case_a_cote(Personnage * perso, Case * destination){ Case *depart = getPosition(perso); - if (get_x(depart)>get_x(destination)+largeur_case||get_x(depart)<get_x(destination)-largeur_case||get_y(depart)>get_y(destination)+hauteur_case||get_y(depart)<get_y(destination)-hauteur_case){ + if (get_x(depart)>get_x(destination)+1||get_x(depart)<get_x(destination)-1||get_y(depart)>get_y(destination)+1||get_y(depart)<get_y(destination)-1){ return faux; } - if (get_y(depart)==get_y(destination)+hauteur_case&&get_x(depart)!=get_x(destination)){ + if (get_y(depart)==get_y(destination)+1&&get_x(depart)!=get_x(destination)){ return faux; } return vrai; } /*! - * \fn boolean case_a_cote(Personnage * perso, Case * destination,int hauteur_case , int largeur_case) + * \fn deplacement_unitaire(Personnage *perso,Case * destination) * \brief déplace un personnage sur une case située à côté de la sienne, si cela est possible * - * \param Un personnage, une case, deux entiers. + * \param Un personnage, une case * \return Un entier. */ -int deplacement_unitaire(Personnage *perso,Case * destination, int hauteur_case , int largeur_case){ - if (est_occupee(destination)){ +int deplacement_unitaire(Personnage *perso,Case * destination){ + if (est_occupee(destination)==vrai){ printf("deplacement impossible : case deja occupee par un personnage\n"); return 1; } - /*if (case_franchissable(destination)==faux){ + if (case_franchissable(destination)==faux){ printf("déplacement impossible : case infranchissable"); return 1; - }*/ - if (case_a_cote(perso,destination, hauteur_case, largeur_case)==vrai){ + } + if (case_a_cote(perso,destination)==vrai){ return deplacer_personnage(perso, destination); } printf("deplacement impossible : case non contigue\n"); diff --git a/src/deplacements.h b/src/deplacements.h index da5923c835ae921899ffd3200dab29bd0bdc07b6..5375a5a983b0c58a492abb779f5713a4e4808189 100644 --- a/src/deplacements.h +++ b/src/deplacements.h @@ -6,9 +6,9 @@ #ifndef DEPLACEMENTS_H_INCLUDED #define DEPLACEMENTS_H_INCLUDED -boolean case_a_cote(Personnage *perso,Case *destination,int hauteur_case, int largeur_case); +boolean case_a_cote(Personnage *perso,Case *destination); -int deplacement_unitaire(Personnage *perso,Case * destination, int hauteur_case , int largeur_case); +int deplacement_unitaire(Personnage *perso,Case * destination); #endif