00001 #ifndef __ANIMAL_HPP__ 00002 #define __ANIMAL_HPP__ 00003 00004 #include <list> 00005 #include "animal_.hpp" 00006 #include "behavior.hpp" 00007 #include "obstacles.hpp" 00008 #include "vector2D.hpp" 00009 00010 00019 #define ORDER_NOTHING 0 //< brak rozkazow */ 00020 #define ORDER_RUN 1 //< ucieczka / atak */ 00021 #define ORDER_FORMGROUP 2 //< grupowanie */ 00022 #define ORDER_DISP 3 //< rozproszenie */ 00023 00024 00025 class Animal : public Animal_ { 00026 protected: 00027 unsigned int _ID; //< przyznany identyfikator */ 00028 unsigned int _LiderID; //< identyfikator 'przelozonego', jesli 00029 // ma te sama wartosc co _ID, to zwierzak 00030 // jest liderem */ 00031 int _Order; //< przechowuje 'rozkaz' */ 00032 unsigned int _OrderParam; //< przechowuje parametr rozkazu, 00033 // np. ID zwierzaka*/ 00034 unsigned int _Target; //< ID 'najlepszej' ofiary */ 00035 00036 Behavior *_behavior; //< zachowanie */ 00037 00038 public: 00039 friend ostream & operator<< (ostream &Strm, const Animal &anim); 00040 friend istream & operator>> (istream &Strm, Animal &anim); 00041 00049 Animal(unsigned int ID); 00050 00054 void setID(unsigned int ID); 00055 00060 unsigned int getID() const; 00061 00066 void setLiderID(unsigned int ID); 00067 00072 unsigned int getLiderID() const; 00073 00078 void setBehavior(Behavior *beh); 00079 00093 Vector2D go(int t); 00094 00103 void reaction(list<Animal_> &family, list<Animal_> &opponent, 00104 Obstacles &obs); 00105 00106 }; 00107 00108 ostream & operator<< (ostream &Strm, const Animal &anim); 00109 istream & operator>> (istream &Strm, Animal &anim); 00110 00111 #endif 00112