#ifndef _UNIVERS_HPP_ #define _UNIVERS_HPP_ 1 #include #include class Organisme; class Animal; class Univers { friend class Organisme; const int _m, _n, _tailleUnivers, _tailleMax; int _tour, _nbAnimaux; int * _plateau; public: Univers(int, int); ~Univers(void); // Ajoute des animaux à l'univers void ajoutAnimaux(std::vector); /* Ajoute un organisme * Attention, écrase l'organisme précédent */ void ajoutOrganisme(Organisme *, int); // Affiche l'univers à l'instant présent void affichage(void); // Vérifie s'il y a de la vie dans l'univers bool enVie(void) const noexcept; }; class Organisme { public: Organisme(void); /* Renvoie l'ID de l'organisme * Si `ID < 0` -> non vivant * Si `ID > 0` -> vivant * Si `ID == 0` -> Herbe */ virtual int id(void) const noexcept = 0; }; class Animal: public Organisme { public: Animal(void); // Animal carnivore ? virtual bool carnivore(void) const noexcept = 0; }; class Herbe: public Organisme { public: Herbe(void); // Représenté par "0" dans l'univers int id(void) const noexcept; }; class Sel: public Organisme { public: Sel(void); // Représenté par "-1" dans l'univers int id(void) const noexcept; }; class Mouton: public Animal { public: Mouton(void); bool carnivore(void) const noexcept; // Représenté par "1" dans l'univers int id(void) const noexcept; }; class Loup: public Animal { public: Loup(void); bool carnivore(void) const noexcept; // Représenté par "2" dans l'univers int id(void) const noexcept; }; #endif