From 73fd8782d0af6954e01507227758d74c2cbb7107 Mon Sep 17 00:00:00 2001 From: Henri Montjoie <henri.montjoie@insa-rennes.fr> Date: Sun, 15 May 2016 13:03:49 +0200 Subject: [PATCH] codage de la fonction deplacement - il y a apparemment des problemes d'initialisation --- src/affichage.c | 2 +- src/controleur.c | 15 +++++++++++++++ src/controleur.h | 2 +- src/deplacements.c | 24 ++++++++++++------------ src/deplacements.h | 4 ++-- 5 files changed, 31 insertions(+), 16 deletions(-) diff --git a/src/affichage.c b/src/affichage.c index 6762c65..b5e5ccf 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 aaa28ad..bf16f04 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 454e740..faa3380 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 3679811..7856374 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 da5923c..5375a5a 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 -- GitLab