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