2022-04-05 18:31:10 +02:00
|
|
|
#ifndef ECOSYSTEME_ANIMAL_HPP
|
|
|
|
#define ECOSYSTEME_ANIMAL_HPP 1
|
2022-04-02 21:22:37 +02:00
|
|
|
|
2022-04-12 09:57:20 +02:00
|
|
|
#include "univers.hpp"
|
2022-04-12 15:20:21 +02:00
|
|
|
#include "sel.hpp"
|
2022-04-02 21:22:37 +02:00
|
|
|
|
2022-04-04 00:08:41 +02:00
|
|
|
/* Un animal possède une vitesse, plus il est rapide,
|
|
|
|
* plus vite il se déplacera à chaque tour, par exemple :
|
|
|
|
* dans le cas où un chasseur et un chassé s'ont l'un à côté
|
|
|
|
* de l'autre, si le chasseur se déplace plus vite, il mangera
|
|
|
|
* le chassé, en revanche, si c'est le chassé qui a une meilleure
|
|
|
|
* vitesse, alors c'est lui qui se déplacera en premier et il
|
|
|
|
* fuira */
|
|
|
|
|
2022-04-02 21:22:37 +02:00
|
|
|
class Animal: public Organisme {
|
2022-04-04 00:08:41 +02:00
|
|
|
protected:
|
2022-04-06 00:53:48 +02:00
|
|
|
const int m_age_max; // age maximale que peut atteindre l'organisme
|
|
|
|
|
2022-04-06 13:10:18 +02:00
|
|
|
const int m_faim_max; // faim maximal que peut atteindre l'animal avant de mourir
|
|
|
|
|
|
|
|
int m_faim = 0; // faim de l'animal
|
|
|
|
|
|
|
|
int m_age = 0; // age actuel de l'organisme
|
2022-04-04 00:08:41 +02:00
|
|
|
|
2022-04-06 14:37:35 +02:00
|
|
|
bool m_reproduire = true; // est-ce que l'animal peut se reproduire ?
|
|
|
|
|
2022-04-12 15:20:21 +02:00
|
|
|
// vrai si l'animal doit déposé des sédiment au sol à sa mort
|
|
|
|
bool m_deposer_sediment = true;
|
|
|
|
|
2022-04-06 20:14:01 +02:00
|
|
|
// Renvoie une vitesse aléatoire (+ élevé = + rapide)
|
2022-04-04 00:08:41 +02:00
|
|
|
virtual int generationVitesse(void) const noexcept = 0;
|
|
|
|
|
2022-04-11 00:46:19 +02:00
|
|
|
// Renvoie la liste des cases accesible depuis la position de l'animal
|
|
|
|
std::vector<int> casesPossible(void) const noexcept;
|
|
|
|
|
2022-04-02 21:22:37 +02:00
|
|
|
public:
|
2022-04-06 20:14:01 +02:00
|
|
|
const int vitesse; // vitesse de l'organisme
|
|
|
|
|
2022-04-06 13:10:18 +02:00
|
|
|
// ID de l'univers, age max, faim max, vitesse
|
2022-04-06 12:56:17 +02:00
|
|
|
Animal(int, int, int, int);
|
2022-04-04 23:21:05 +02:00
|
|
|
|
2022-04-06 13:10:18 +02:00
|
|
|
// ID de l'univers, index dans l'univers, age max, faim max, vitesse
|
2022-04-06 12:56:17 +02:00
|
|
|
Animal(int, int, int, int, int);
|
2022-04-04 23:21:05 +02:00
|
|
|
|
2022-04-12 15:08:58 +02:00
|
|
|
~Animal(void);
|
2022-04-02 21:22:37 +02:00
|
|
|
|
|
|
|
// Animal carnivore ?
|
|
|
|
virtual bool carnivore(void) const noexcept = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|