Jafar
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
LGLMultiPursuit_Viewer.hpp
00001 
00013 /* $Id: lglViewer.hpp 4094 2009-09-04 09:32:58Z hcao $ */
00014 
00015 #ifdef HAVE_MODULE_QDISPLAY // lgl viewer is on if HAVE_MODULE_QDISPLAY is defined
00016 
00017 #ifndef LGL_DISPLAY_MULTI_PURSUIT_HPP
00018 #define LGL_DISPLAY_MULTI_PURSUIT_HPP
00019 
00020 #include <qdisplay/init.hpp>
00021 #include <qdisplay/Viewer.hpp>
00022 #include <qdisplay/ImageView.hpp>
00023 #include <qdisplay/Shape.hpp>
00024 
00025 #include <lgl/PursuitStats.hpp>
00026 #include <lgl/RobotPursuer.hpp>
00027 
00028 #include <boost/thread/thread.hpp>
00029 
00030 #include <ostream>
00031 #include <string>
00032 #include <vector>
00033 
00034 namespace jafar {
00035   namespace lgl {
00036 
00037 
00038     class LGLMultiPursuit_Viewer ;
00039 
00040     /*  specific viewer, herited from qdisplay */
00041     class MultiPursuit_Controller : public jafar::qdisplay::Viewer 
00042     {
00043       
00044       private :
00045         LGLMultiPursuit_Viewer *master ;
00046       
00047       protected : 
00048         void setMaster( LGLMultiPursuit_Viewer &_master);
00049 
00050       signals:
00051         void keyPressEvent(QKeyEvent *event);
00052 
00053       friend class LGLMultiPursuit_Viewer ;
00054 
00055     };
00056 
00057     class MultiPursuit_Viewer : public jafar::qdisplay::Viewer 
00058     {
00059 
00060       private :
00061         double scale ;
00062       
00063       public :
00064         MultiPursuit_Viewer(double _scale) :
00065           scale(_scale)
00066         { }
00067       
00068       protected :
00069         void mouseMoveEvent ( QMouseEvent * event );
00070 
00071       friend class LGLMultiPursuit_Viewer ;
00072 
00073     };
00074 
00075     struct MultiProtagonist
00076     {
00077       //position
00078       int x ;
00079       int y ;
00080 
00081       //display
00082       jafar::qdisplay::Shape *shape1;
00083       jafar::qdisplay::Shape *shape2;
00084       jafar::qdisplay::Shape *shape3;
00085     };
00086 
00087     class LGLMultiPursuit_Viewer 
00088     {
00089       public:
00090         
00091         // Constructors and Destructor 
00092         LGLMultiPursuit_Viewer( RobotPursuer &_pt_robot);
00093         
00094         ~LGLMultiPursuit_Viewer();
00095 
00096         void setRobotPosition ( int _x, int _y);
00097         void setTargetPosition  ( int _x, int _y);
00098 
00099         /* start the game 
00100          *
00101          * return false if encounter any problem while launching the game.
00102          **/
00103         bool start () ;
00104 
00105         /* Reaction to target Movement (+ _x, + _y )
00106          */
00107         void move ( int _x, int _y) ;
00108 
00109       private:
00110         /* robot */
00111         RobotPursuer *pt_robot;
00112 
00113         /* Controler */
00114         jafar::lgl::MultiPursuit_Controller* ctrl ;
00115 
00117         MultiPursuit_Viewer* viewer1;
00118         MultiPursuit_Viewer* viewer2;
00119         MultiPursuit_Viewer* viewer3;
00120 
00121         /* Position of the robot and the target */
00122         MultiProtagonist robot ;
00123         MultiProtagonist target ;
00124 
00125         /* Scale for display */
00126         double scale ;
00127 
00128         /* risk view */
00129         std::vector< jafar::qdisplay::Shape *> risks ;
00130 
00131         /* enable / disable the display of the risks
00132          */
00133         bool visibleRisks;
00134 
00135         /* statistics 
00136          */
00137         PursuitStats stats ;
00138 
00139         /* start the display 
00140          *
00141          * return false if data (file path) are missing, true otherwise.
00142          **/
00143         bool startDisplay () ;
00144 
00145         /* Refresh the display (especially the protagonist position )
00146          */
00147         bool refresh();
00148 
00149         /* Display the risk positions
00150          */
00151         void displayrisks();
00152 
00153         /* Hide the risk positions
00154          */
00155         void hiderisks();
00156 
00157         /* Display the statistics
00158          */
00159         void displaystats();
00160 
00161         /* Display the "help"
00162          */
00163         void displayhelp();
00164 
00165       friend class MultiPursuit_Controller ;
00166 
00167     };
00168 
00169   }
00170 }
00171 
00172 #endif // LGL_DISPLAY_MULTI_PURSUIT_HPP
00173 #endif // QDisplay enabled 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on Wed Oct 15 2014 00:37:24 for Jafar by doxygen 1.7.6.1
LAAS-CNRS