#ifndef map_h #define map_h // map.h - classe Map // nono - Programme du robot Efrei Robotique I1-I2 2004 // Copyright (C) 2004 Olivier Gaillard #include #include "group.h" #include "oconfig.h" #include "space.h" #define LOCKED 1 #define UNLOCKED 0 /// TODO calcul de plusieurs scores si on veut rapidite ou efficacite /// Structure stockant les balles struct BALL { /// position de la balle int position[2]; /// score balle pour le choix de la prochaine balle a aller chercher int score; /// score precalcule sans distance pour eviter les calculs redondants int preScore; // zone balle, facilite le calcul de la distance robot-balle int zone; /// probabilite que la balle sot a la zone indique par la map int skepticism; /// balle vu seulement partiellement par la camera int partial; }; /// Classe Map class Map { /// Variables configurables OConfig *config; Space *space; /// position des goals int posGoal[2]; /// Liste de balles trouvees std::list ball; /// Stocke le numero de la balle locke int lock; /// Ajoute une balle a la map void AddBall(int *pos, ZONE *pZone); /// Supprime une balle de la map void DelBall(std::list::iterator &iter); /// Test si une balle trouvĂ correspond a une balle de la map int TestSimilarBall(ZONE *pBall , std::list::iterator &iter); /// Distance robot-balle int Dist(int *pos1, int *pos2); /// Balle ayant le plus haut score std::list::iterator curBall; public: /// Balle ayant la plus grand score int goodBall; /// Zone ou est situe le robot int zoneRobot; /// Permet de savoir si une balle est dans curBall bool checkCurBall; /// Constructeurs. Map (OConfig *config, Space *space); /// Destructeur. ~Map (void); /// Retourne si une balle est locke int IsLock(); /// Lock une balle pour savoir quel balle le robot suit void SetLock(bool value); /// Ajoute des balles a la liste void AddBallsToMap(Group *group); /// Met a jour les scores des balles void UpdateMap(); //Affiche les balles de la map void ShowBalls(); /// Accessors const std::list::iterator &GetCurBall(); protected: }; #endif // map_h