#include "deplacement.h"
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#ifndef M_PI
# define M_PI    3.14159265358979323846
# define M_PI_2  1.57079632679489661923
# define M_PI_4  0.78539816339744830962
#endif

/****************/
/* 2  *  3 * 4  */
/****************/
/* 1 *     * 5  */
/****************/
/* 8 *  7  * 6  */
/****************/

/*
zone 1: x<= 95 ; y<405 ; y>95 ;
zone 2: x<=95 ; y<= 95 ;
zone 3: x>95 ; x<405; y<=95;
zone 4: x>=405 ; y<=95;
zone 5: x>=405 ; y<400 ; y>95 ;
zone 6: x>=405 ; y>=405;
zone 7: x>95 ; x<405 ; y>=405;
zone 8: x<=95 ; y>=405;
*/

#define EPSILON 0.0001

Direction deplacement (Info * info) {
        Direction direction;
        Perso * perso;
        int nbre_gommes_zones;

        /* dans ce cas la il s'agit du premier appel de la fonction, il faut donc initialiser la structure perso*/
        if (info->perso == NULL)
        {
                info->perso = malloc(sizeof(perso));
                ((Perso*)info->perso)->old = .0;
        }
        /* raccourci pratique */
        perso = (Perso*) info->perso;


        /* appel de la fonction chercher gomme zone qui va compter le nombre de gommes par zone et qui va nous renvoyer le nombre de gomme sur les zones du bord*/
        nbre_gommes_zones = ChercheGommeZone(info);

        /* Si il y a des gommes dans les zones du bord le ploucman va y aller se nourrir */
        if (nbre_gommes_zones>0)
        {
                direction = NettoyerZone(info);
        }
        /* Sinon on finit de nettoyer la totalite du plateau  en s'occupant de la zone central*/
        else
        {
                direction = NettoyerZoneCentral(info);
        }
        perso->old=direction;
        return (direction-M_PI);
}


/********************************************************************************/
/************************Fonction chercher nbr gomme par zone********************/
/********************************************************************************/

int ChercheGommeZone(Info * info)
{
        int i;
        int somme;
        Perso * perso;

        /* raccourci pratique */
        perso = (Perso*) info->perso;

        /* on met à zéro le tableau de gomme */
        perso->nbre_gomme_zone[0] = 0;
        perso->nbre_gomme_zone[1] = 0;
        perso->nbre_gomme_zone[2] = 0;
        perso->nbre_gomme_zone[3] = 0;
        perso->nbre_gomme_zone[4] = 0;
        perso->nbre_gomme_zone[5] = 0;
        perso->nbre_gomme_zone[6] = 0;
        perso->nbre_gomme_zone[7] = 0;
        perso->nbre_gomme_zone[8] = 0;
        perso->nbre_gomme_zone[9] = 0;
        perso->nbre_gomme_zone[10] = 0;
        perso->nbre_gomme_zone[11] = 0;

        /* on parcours le tableau de gomme */
        for (i=0; i<info->n_cibles;i++)
        {
                if( info->cibles[i] == 0)
                {
                        /* Si gomme dans la zone 1 */
                        if( info->pos_cibles[i].x <= 95 && info->pos_cibles[i].y < 405 && info->pos_cibles[i].y > 95 )
                        {
                                (perso->nbre_gomme_zone[0])++;
                        }
                        /* Si gomme dans zone 2 */
                        else if (info->pos_cibles[i].y <= 95 && info->pos_cibles[i].x <= 95)
                        {
                                (perso->nbre_gomme_zone[1])++;
                        }
                        /* Si gomme dans zone 3 */
                        else if (info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y <= 95 )
                        {
                                (perso->nbre_gomme_zone[2])++;
                        }
                        /* Si gomme dans zone 4 */
                        else if ( info->pos_cibles[i].x >= 405 &&  info->pos_cibles[i].y <= 95)
                        {
                                (perso->nbre_gomme_zone[3])++;
                        }
                        /* Si gomme dans zone 5 */
                        else if ( info->pos_cibles[i].x >= 405 && info->pos_cibles[i].y < 405 && info->pos_cibles[i].y > 95)
                        {
                                (perso->nbre_gomme_zone[4])++;
                        }
                        /* Si gomme dans zone 6 */
                        else if ( info->pos_cibles[i].x >= 405 &&  info->pos_cibles[i].y >= 405)
                        {
                                (perso->nbre_gomme_zone[5])++;
                        }
                        /* Si gomme dans zone 7 */
                        else if ( info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 &&  info->pos_cibles[i].y >= 405 )
                        {
                                (perso->nbre_gomme_zone[6])++;
                        }
                        /* Si gomme dans zone 8 */
                        else if ( info->pos_cibles[i].y >= 405 && info->pos_cibles[i].x <= 95)
                        {
                                (perso->nbre_gomme_zone[7])++;
                        }
                        /* Si gomme dans zone central droite */
                        else if (info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 > info->pos_cibles[i].y - 96) && (info->pos_cibles[i].x - 0 > 500 - info->pos_cibles[i].y))
                        {
                                (perso->nbre_gomme_zone[8])++;
                        }
                        /* Si gomme dans zone central haut */
                        else if (info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 > info->pos_cibles[i].y - 96) && (info->pos_cibles[i].x - 0 < 500 - info->pos_cibles[i].y))
                        {
                                (perso->nbre_gomme_zone[9])++;
                        }
                        /* Si gomme dans zone central gauche */
                        else if (info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 < info->pos_cibles[i].y - 96) && (500 - info->pos_cibles[i].x > info->pos_cibles[i].y))
                        {
                                (perso->nbre_gomme_zone[10])++;
                        }
                        /* Si gomme dans zone central bas */
                        else if (info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 < info->pos_cibles[i].y - 96) && (500 - info->pos_cibles[i].x < info->pos_cibles[i].y))
                        {
                                (perso->nbre_gomme_zone[11])++;
                        }
                }
        }
        /* on fait la somme des gommes pour savoir si il reste des gommes dans les zones externes */
        somme = perso->nbre_gomme_zone[0]+ perso->nbre_gomme_zone[1] + perso->nbre_gomme_zone[2] + perso->nbre_gomme_zone[3] + perso->nbre_gomme_zone[4] + perso->nbre_gomme_zone[5] + perso->nbre_gomme_zone[6] + perso->nbre_gomme_zone[7];
        return(somme);
}

/********************************************************************************/
/***********************Fonction nettoyer gommes dans zone***********************/
/********************************************************************************/

Direction NettoyerZone(Info * info)
{
        Perso * perso;
        Direction direction;

        /* raccourci pratique */
        perso = (Perso*) info->perso;

/***********************************************/
/******** Si le ploucman est dans zone 1 *******/
/***********************************************/
        if( info->position.x <= 95 && info->position.y < 405 && info->position.y > 95 )
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[0]> 0)
                {
                        direction=MangerGommesZone(info,"zone1");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[7] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[7] == 0)
                {
                        /* aller vers la zone 2 */
                        direction=MangerGommesZone(info,"zone2");
                }
                else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[7] > 0)
                {
                        /* aller vers la zone 8 */
                        direction=MangerGommesZone(info,"zone8");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[7] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[6] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[5] == 0) || (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[5] > 0))
                                {
                                        /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[5] == 0)
                                {
                                        /* aller vers zone 2 */
                                        direction=M_PI_2;
                                }
                                else if (perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[5] > 0)
                                {
                                        /* aller vers zone 8 */
                                        direction=-M_PI_2;
                                }
                        }
                        else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[6] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[6] == 0)
                        {
                                /* aller vers la zone 2 */
                                direction=M_PI_2;
                        }
                        else if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[6] > 0)
                        {
                                /* aller vers la zone 8 */
                                direction=-M_PI_2;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 2 *******/
/***********************************************/
        else if (info->position.y <= 95 && info->position.x <= 95)
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[1] > 0)
                {
                        direction=MangerGommesZone(info,"zone2");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[2] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[2] == 0)
                {
                        /* aller vers la zone 1 */
                        direction=MangerGommesZone(info,"zone1");
                }
                else if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[2] > 0)
                {
                        /* aller vers la zone 3 */
                        direction=MangerGommesZone(info,"zone3");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[0]== 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[7] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if  ((perso->nbre_gomme_zone[4] == 0 && perso->nbre_gomme_zone[6] == 0) || (perso->nbre_gomme_zone[4] > 0 && perso->nbre_gomme_zone[6] > 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[4] > 0 && perso->nbre_gomme_zone[6] == 0)
                                {
                                        /* aller vers zone 3 */
                                        direction=M_PI;
                                }
                                else if (perso->nbre_gomme_zone[4] == 0 && perso->nbre_gomme_zone[6] > 0)
                                {
                                        /* aller vers zone 1 */
                                        direction=-M_PI_2;
                                }
                        }
                        else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[7] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[7] == 0)
                        {
                                /* aller vers la zone 3 */
                                direction=M_PI;
                        }
                        else if (perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[7] > 0)
                        {
                                /* aller vers la zone 1 */
                                direction=-M_PI_2;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 3 *******/
/***********************************************/
        else if (info->position.x > 95 && info->position.x < 405 && info->position.y <= 95 )
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[2] > 0)
                {
                        direction=MangerGommesZone(info,"zone3");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[3] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[3] == 0)
                {
                        /* aller vers la zone 2 */
                        direction=MangerGommesZone(info,"zone2");
                }
                else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[3] > 0)
                {
                        /* aller vers la zone 4 */
                        direction=MangerGommesZone(info,"zone4");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[3] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[4] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[7] > 0 && perso->nbre_gomme_zone[5] > 0) || (perso->nbre_gomme_zone[7] == 0 && perso->nbre_gomme_zone[5] == 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[7] > 0 && perso->nbre_gomme_zone[5] == 0)
                                {
                                        /* aller vers zone 2 */
                                        direction=.0;
                                }
                                else if (perso->nbre_gomme_zone[7] == 0 && perso->nbre_gomme_zone[5] > 0)
                                {
                                        /* aller vers zone 8 */
                                        direction=M_PI;
                                }
                        }
                        else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[4] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[4] == 0)
                        {
                                /* aller vers la zone 2 */
                                direction=.0;
                        }
                        else if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[4] > 0)
                        {
                                /* aller vers la zone 4 */
                                direction=M_PI;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 4 *******/
/***********************************************/
        else if ( info->position.x >= 405 &&  info->position.y <= 95)
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[3] > 0)
                {
                        direction=MangerGommesZone(info,"zone4");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[4] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[4] == 0)
                {
                        /* aller vers la zone 3 */
                        direction=MangerGommesZone(info,"zone3");
                }
                else if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[4] > 0)
                {
                        /* aller dans la zone 5 */
                        direction=MangerGommesZone(info,"zone5");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[4] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[5] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[6] > 0) || (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[6] == 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[6] == 0)
                                {
                                        /* aller vers zone 3 */
                                        direction=.0;
                                }
                                else if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[6] > 0)
                                {
                                        /* aller vers zone 5 */
                                        direction=-M_PI_2;
                                }
                        }
                        else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[5] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[5] == 0)
                        {
                                /* aller vers la zone 3 */
                                direction=.0;
                        }
                        else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[5] > 0)
                        {
                                /* aller vers la zone 5 */
                                direction=-M_PI_2;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 5 *******/
/***********************************************/
        else if ( info->position.x >= 405 && info->position.y < 405 && info->position.y > 95)
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[4] > 0)
                {
                        direction=MangerGommesZone(info,"zone5");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[5] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[5] == 0)
                {
                        /* aller vers la zone 4 */
                        direction=MangerGommesZone(info,"zone4");
                }
                else if (perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[5] > 0)
                {
                        /* aller vers la zone 6 */
                        direction=MangerGommesZone(info,"zone6");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[5] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[6] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[7] > 0) || (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[7] == 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[7] == 0)
                                {
                                        /* aller vers zone 4 */
                                        direction=M_PI_2;
                                }
                                else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[7] > 0)
                                {
                                        /* aller vers zone 6 */
                                        direction=-M_PI_2;
                                }
                        }
                        else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[6] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[6] == 0)
                        {
                                /* aller vers la zone 4 */
                                direction=M_PI_2;
                        }
                        else if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[6] > 0)
                        {
                                /* aller vers la zone 6 */
                                direction=-M_PI_2;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 6 *******/
/***********************************************/
        else if ( info->position.x >= 405 &&  info->position.y >= 405)
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[5] > 0)
                {
                        direction=MangerGommesZone(info,"zone6");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[4] > 0 && perso->nbre_gomme_zone[6] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[4] > 0 && perso->nbre_gomme_zone[6] == 0)
                {
                        /* aller vers zone 5 */
                        direction=MangerGommesZone(info,"zone5");
                }
                else if (perso->nbre_gomme_zone[4] == 0 && perso->nbre_gomme_zone[6] > 0)
                {
                        /* aller vers zone 7 */
                        direction=MangerGommesZone(info,"zone7");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[4] == 0 && perso->nbre_gomme_zone[6] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[7] == 0 && perso->nbre_gomme_zone[3] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[2] > 0) || (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[2] == 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[2] == 0)
                                {
                                        /* aller vers zone 7 */
                                        direction=.0;
                                }
                                else if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[2] > 0)
                                {
                                        /* aller vers zone 5 */
                                        direction=M_PI_2;
                                }
                        }
                        else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[7] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[3] > 0 && perso->nbre_gomme_zone[7] == 0)
                        {
                                /* aller vers la zone 5 */
                                direction=M_PI_2;
                        }
                        else if (perso->nbre_gomme_zone[3] == 0 && perso->nbre_gomme_zone[7] > 0)
                        {
                                /* aller vers la zone 7 */
                                direction=.0;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 7 *******/
/***********************************************/
        else if ( info->position.x > 95 && info->position.x < 405 &&  info->position.y >= 405 )
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[6] > 0)
                {
                        direction=MangerGommesZone(info,"zone7");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[5] > 0 && perso->nbre_gomme_zone[7] > 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[5] > 0 && perso->nbre_gomme_zone[7] == 0)
                {
                        /* aller vers zone 6 */
                        direction=MangerGommesZone(info,"zone6");
                }
                else if (perso->nbre_gomme_zone[5] == 0 && perso->nbre_gomme_zone[7] > 0)
                {
                        /* aller vers zone 8 */
                        direction=MangerGommesZone(info,"zone8");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[5] == 0 && perso->nbre_gomme_zone[7] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[4] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[3] > 0) || (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[3] == 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[3] == 0)
                                {
                                        /* aller vers zone 8 */
                                        direction=.0;
                                }
                                else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[3] > 0)
                                {
                                        /* aller vers zone 6 */
                                        direction=M_PI;
                                }
                        }
                        else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[4] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[0]> 0 && perso->nbre_gomme_zone[4] == 0)
                        {
                                /* aller vers la zone 8 */
                                direction=.0;
                        }
                        else if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[4] > 0)
                        {
                                /* aller vers la zone 6 */
                                direction=M_PI;
                        }
                }
        }
/***********************************************/
/******** Si le ploucman est dans zone 8 *******/
/***********************************************/
        else if ( info->position.y >= 405 && info->position.x <= 95)
        {
                /* si il y a des gommes dans la zone on les manges */
                if (perso->nbre_gomme_zone[7] > 0)
                {
                        direction=MangerGommesZone(info,"zone8");
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a (ou qu'il n'y en a pas) dans les deux zones adjacentes alors on se dirige vers la zone la plus proche */
                else if (perso->nbre_gomme_zone[6] > 0 && perso->nbre_gomme_zone[0]> 0)
                {
                        direction=ZonePlusPres(info);
                }
                /* si il n'y a plus de gommes dans la zone et qu'il y en a dans une des zones adjacentes alors on se dirige vers celle-ci*/
                else if (perso->nbre_gomme_zone[6] > 0 && perso->nbre_gomme_zone[0]== 0)
                {
                        /* aller vers zone 7 */
                        direction=MangerGommesZone(info,"zone7");
                }
                else if (perso->nbre_gomme_zone[6] == 0 && perso->nbre_gomme_zone[0]> 0)
                {
                        /* aller vers zone 1 */
                        direction=MangerGommesZone(info,"zone1");
                }
                /* si il n'y a pas de gommes dans les deux zones adjacentes  on regarde les zones suivantes*/
                else if (perso->nbre_gomme_zone[0]== 0 && perso->nbre_gomme_zone[6] == 0)
                {
                        /* test des zones suivantes pour savoir si il y a des gommes dedans */
                        if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[5] == 0)
                        {
                                /* si il n'y en a pas on test les deux zones suivantes */
                                if ((perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[4] > 0) || (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[4] == 0))
                                {
                                        /* si il n'y en a pas on se dirige vers la zone la plus proche */
                                        direction=ZonePlusPres(info);
                                }
                                else if (perso->nbre_gomme_zone[2] > 0 && perso->nbre_gomme_zone[4] == 0)
                                {
                                        /* aller vers zone 1 */
                                        direction=M_PI_2;
                                }
                                else if (perso->nbre_gomme_zone[2] == 0 && perso->nbre_gomme_zone[4] > 0)
                                {
                                        /* aller vers zone 7 */
                                        direction=M_PI;
                                }
                        }
                        else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[5] > 0)
                        {
                                /* si il n'y en a pas ou qu'il y en a dans les deux zones on se dirige vers la zone la plus proche */
                                direction=ZonePlusPres(info);
                        }
                        /* si il y a des gommes dans une des zones suivantes on va dans la direction de cette zone */
                        else if (perso->nbre_gomme_zone[1] > 0 && perso->nbre_gomme_zone[5] == 0)
                        {
                                /* aller vers la zone 1 */
                                direction=M_PI_2;
                        }
                        else if (perso->nbre_gomme_zone[1] == 0 && perso->nbre_gomme_zone[5] > 0)
                        {
                                /* aller vers la zone 7 */
                                direction=M_PI;
                        }
                }
        }
/*****************************************************/
/******** Si le ploucman est dans zone central *******/
/*****************************************************/
        else
        {
                /* si la vitesse du plouc est inférieure à celle des montres on prend les gommes les plus proches */
                if (info->vitesse < 1.3)
                {
                        direction=MangerGommes(info);
                }
                else
                {
                        /* sinon on se dirige vers la zone la plus proche pour prendre de la vitesse */
                        direction=ZonePlusPres(info);
                }
        }
        return(direction);
}

/********************************************************************************/
/**********************************Zone plus pres********************************/
/********************************************************************************/

Direction ZonePlusPres(Info * info)
{
        Direction direction;

        /* Si le ploucman est dans la zone 1 */
        if( info->position.x <= 95 && info->position.y < 405 && info->position.y > 95 )
        {
                if (info->position.y > 250)
                {
                        /*puts("zone 1 plouc bas");*/
                        direction=-M_PI_2;
                }
                else
                {
                        /*puts("zone 1 plouc haut");*/
                        direction=M_PI_2;
                }
        }
        /* Si le ploucman est dans zone 2 */
        else if (info->position.y <= 95 && info->position.x <= 95)
        {
                /* separation de la zone par la diagonale */
                if (info->position.x - 0 /* carre left */ > info->position.y - 0 /* carre top */)
                {
                        /*puts("zone 2 plouc haut");*/
                        direction=M_PI;
                }
                else
                {
                        /*puts("zone 2 plouc bas");*/
                        direction=-M_PI_2;
                }
        }
        /* Si le ploucman est dans zone 3 */
        else if (info->position.x > 95 && info->position.x < 405 && info->position.y <= 95 )
        {
                if (info->position.x > 250)
                {
                        /*puts("zone 3 plouc droite");*/
                        direction=M_PI;
                }
                else
                {
                        /*puts("zone 3 plouc gauche");*/
                        direction=.0;
                }
        }
        /* Si le ploucman est dans zone 4 */
        else if ( info->position.x >= 405 &&  info->position.y <= 95)
        {
                /* separation de la zone par la diagonale */
                if (info->position.x - 500 /* carr�right */ > info->position.y - 405 /* carr�back */)
                {
                        /*puts("zone 4 plouc bas");*/
                        direction=.0;
                }
                else
                {
                        /*puts("zone 4 plouc haut");*/
                        direction=-M_PI_2;
                }
        }
        /* Si le ploucman est dans zone 5 */
        else if ( info->position.x >= 405 && info->position.y < 405 && info->position.y > 95)
        {
                if (info->position.y > 250)
                {
                        /*puts("zone 5 plouc bas");*/
                        direction=-M_PI_2;
                }
                else
                {
                        /*puts("zone 5 plouc haut");*/
                        direction=M_PI_2;
                }
        }
        /* Si le ploucman est dans zone 6 */
        else if ( info->position.x >= 405 &&  info->position.y >= 405)
        {
                /* separation de la zone par la diagonale */
                if (info->position.x - 405 /* carr�left */ > info->position.y - 405 /* carr�top */)
                {
                        /*puts("zone 6 plouc haut");*/
                        direction=M_PI_2;
                }
                else
                {
                        /*puts("zone 6 plouc bas");*/
                        direction=.0;
                }
        }
        /* Si le ploucman est dans zone 7 */
        else if ( info->position.x > 95 && info->position.x < 405 &&  info->position.y >= 405 )
        {
                if (info->position.x > 250)
                {
                        /*puts("zone 7 plouc droite");*/
                        direction=M_PI;
                }
                else
                {
                        /*puts("zone 7 plouc gauche");*/
                        direction=.0;
                }
        }
        /* Si le ploucman est dans zone 8 */
        else if ( info->position.y >= 405 && info->position.x <= 95)
        {
                /* separation de la zone par la diagonale */
                if (info->position.x - 0 /* carr�right */ > info->position.y - 500 /* carr�back */)
                {
                        /*puts("zone 8 plouc bas");*/
                        direction=M_PI;
                }
                else
                {
                        /*puts("zone 8 plouc haut");*/
                        direction=M_PI_2;
                }
        }
        /* Si le ploucman est dans la zone central */
        else
        {
                /* separation de la zone par la diagonale */
                if (info->position.x - 96 /* carré left */ > info->position.y - 96 /* carré top */)
                {
                        /* reseparation de la zone par la diagonale */
                        if (info->position.x - 0 > 500 - info->position.y)
                        {
                                /*puts("zone central plouc droite");*/
                                direction=M_PI;
                        }
                        else
                        {
                                /*puts("zone central plouc haut");*/
                                direction=M_PI_2;
                        }
                }
                else
                {
                        /* reseparation de la zone par la diagonale */
                        if (500 - info->position.x > info->position.y)
                        {
                                /*puts("zone central plouc gauche");*/
                                direction=.0;
                        }
                        else
                        {
                                /*puts("zone central plouc bas");*/
                                direction=-M_PI_2;
                        }
                }
        }
        return(direction);
}

/********************************************************************************/
/**************************Fonction manger gommes zone***************************/
/********************************************************************************/

Direction MangerGommesZone(Info * info, char * zone)
{
        Direction direction;
        int i;
        float tmpx;
        float tmpy;
        double finalx;
        double finaly;
        double longueur;
        double longueurfinale;
        Perso * perso;

        /* raccourci pratique */
        perso = (Perso*) info->perso;

        longueurfinale = (double)(info->xmax*sqrt(2));

        for(i=0;i<info->n_cibles;i++)
        {
                if(info->cibles[i] == 0)
                {

                        /* Si le ploucman est dans la zone 1 */
                        if (( zone == "zone1" ) && ( info->pos_cibles[i].x <= 95 && info->pos_cibles[i].y < 405 && info->pos_cibles[i].y > 95 ))
                        {
                                /*puts("zone 1 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 2 */
                        else if (( zone == "zone2") && (info->pos_cibles[i].y <= 95 && info->pos_cibles[i].x <= 95))
                        {
                                /*puts("zone 2 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 3 */
                        else if (( zone == "zone3") && (info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y <= 95) )
                        {
                                /*puts("zone 3 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 4 */
                        else if ((zone == "zone4") && ( info->pos_cibles[i].x >= 405 &&  info->pos_cibles[i].y <= 95))
                        {
                                /*puts("zone 4 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 5 */
                        else if (( zone == "zone5") && ( info->pos_cibles[i].x >= 405 && info->pos_cibles[i].y < 405 && info->pos_cibles[i].y > 95))
                        {
                                /*puts("zone 5 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 6 */
                        else if ((zone == "zone6") && ( info->pos_cibles[i].x >= 405 &&  info->pos_cibles[i].y >= 405))
                        {
                                /*puts("zone 6 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 7 */
                        else if (( zone == "zone7" ) && ( info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 &&  info->pos_cibles[i].y >= 405 ))
                        {
                                /*puts("zone 7 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si le ploucman est dans zone 8 */
                        else if ((zone == "zone8") && ( info->pos_cibles[i].y >= 405 && info->pos_cibles[i].x <= 95))
                        {
                                /*puts("zone 8 plouc mange");*/
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si gomme dans zone central droite */
                        else if ((zone == "droite") && info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 > info->pos_cibles[i].y - 96) && (info->pos_cibles[i].x - 0 > 500 - info->pos_cibles[i].y))
                        {
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si gomme dans zone central haut */
                        else if ((zone == "haut") && info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 > info->pos_cibles[i].y - 96) && (info->pos_cibles[i].x - 0 < 500 - info->pos_cibles[i].y))
                        {
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si gomme dans zone central gauche */
                        else if ((zone == "gauche") && info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 < info->pos_cibles[i].y - 96) && (500 - info->pos_cibles[i].x > info->pos_cibles[i].y))
                        {
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                        /* Si gomme dans zone central bas */
                        else if ((zone == "bas") && info->pos_cibles[i].x > 95 && info->pos_cibles[i].x < 405 && info->pos_cibles[i].y > 95 && info->pos_cibles[i].y < 405 && (info->pos_cibles[i].x - 96 < info->pos_cibles[i].y - 96) && (500 - info->pos_cibles[i].x < info->pos_cibles[i].y))
                        {
                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                        }
                }
        }
        direction = atan2(finaly,finalx);
        return (direction);
}


/********************************************************************************/
/******************Fonction nettoyer gommes dans zone central********************/
/********************************************************************************/

Direction NettoyerZoneCentral(Info * info)
{
        Direction direction;
        Perso * perso;

        /* raccourci pratique */
        perso = (Perso*) info->perso;

        if (info->position.x <= 95 && info->position.x >= 405 && info->position.y <= 95 && info->position.y >= 405)
        {
                /* si on est pas dans la zone central on va vers elle */
                direction=MangerGommes(info);
        }
        else
        {
                /* separation de la zone par la diagonale */
                if (info->position.x - 96 /* carré left */ > info->position.y - 96 /* carré top */)
                {
                        /* reseparation de la zone par la diagonale */
                        if (info->position.x - 0 > 500 - info->position.y)
                        {
                                /*puts("zone central plouc droite");*/
                                if (perso->nbre_gomme_zone[8]> 0 )
                                {
                                        direction=MangerGommesZone(info,"droite");
                                }
                                else
                                {
                                        direction=MangerGommes(info);
                                }
                        }
                        else
                        {
                                /*puts("zone central plouc haut");*/
                                if (perso->nbre_gomme_zone[9]> 0 )
                                {
                                        direction=MangerGommesZone(info,"haut");
                                }
                                else
                                {
                                        direction=MangerGommes(info);
                                }
                        }
                }
                else
                {
                        /* reseparation de la zone par la diagonale */
                        if (500 - info->position.x > info->position.y)
                        {
                                /*puts("zone central plouc gauche");*/
                                if (perso->nbre_gomme_zone[10]> 0 )
                                {
                                        direction=MangerGommesZone(info,"gauche");
                                }
                                else
                                {
                                        direction=MangerGommes(info);
                                }
                        }
                        else
                        {
                                /*puts("zone central plouc bas");*/
                                if (perso->nbre_gomme_zone[11]> 0 )
                                {
                                        direction=MangerGommesZone(info,"bas");
                                }
                                else
                                {
                                        direction=MangerGommes(info);
                                }
                        }
                }
        }
        return(direction);
}

/********************************************************************************/
/**********************Fonction manger gommes la plus proche*********************/
/********************************************************************************/

Direction MangerGommes(Info * info)
{
        Direction direction;
        int i;
        float tmpx;
        float tmpy;
        double finalx;
        double finaly;
        double longueur;
        double longueurfinale;
        Perso * perso;

        /* raccourci pratique */
        perso = (Perso*) info->perso;

        longueurfinale = (double)(info->xmax*sqrt(2));

        for(i=0;i<info->n_cibles;i++)
        {
                if(info->cibles[i] == 0)
                {

                                tmpx = (double)(info->position.x - info->pos_cibles[i].x);
                                tmpy = (double)(info->position.y - info->pos_cibles[i].y);
                                longueur = sqrt((tmpx)*(tmpx) + (tmpy)*(tmpy));
                                if(longueur < longueurfinale)
                                {
                                        longueurfinale = longueur;
                                        finalx = tmpx;
                                        finaly = tmpy;
                                }
                }
        }
        direction = atan2(finaly,finalx);
        return (direction);
}

void libere_perso(void * perso) {
   /* à personnaliser si besoin */
   if (perso)
      free(perso);
}

/* ne pas modifier cette fonction */

char * identification(void) {
   char * ident,* courant;
   ident = malloc(100);
   sprintf(ident,"Groupe %s (%s)",GROUPE,NOMS);
   courant = ident;
   while ((courant = (strchr(courant,'_'))))
      *courant = ' ';
   return ident;
}