Darwinian Smoke  1
Une simulation de fumées vivantes disposant de comportements variables et d'un transmission héréditaire de ceux-ci, qui sont soumis à la sélection naturelle dans un environnement hostile.
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Fumee_esquive Class Reference

Une fumée Vivante qui meurt si elle rencontre une Entite Hostile du Jeu, et dont le comportement est conçu pour les fuir. More...

#include <Fumee_esquive.h>

Inheritance diagram for Fumee_esquive:
Inheritance graph
Collaboration diagram for Fumee_esquive:
Collaboration graph

Public Member Functions

 Fumee_esquive ()
 Construit tous ses attributs de manière aléatoire (bornes arbitraires) More...
 
 Fumee_esquive (size_t t_min, size_t t_max, size_t NB_ADD, size_t NB_RM, size_t mutateur)
 Constructeur prenant dans l'ordre : t_min,t_max,NB_ADD,NB_RM,mutateur. More...
 
void step (Map &ext, const std::map< int, Entite * > &corr)
 Avance d'un pas, appelle la fonction step2. More...
 
std::string type () const
 Le type d'une Fumee_esquive est "ESQUIVE". More...
 
bool should_greed (const Map &ext, const std::map< int, Entite * > &corr) const
 Si on est assez loin des projectiles, on a plus de chance de se reproduire. More...
 
std::list< Vivante * > get_children (Map &ext, const std::map< int, Entite * > &corr) const
 Crée 1 enfant avec une position aléatoire et des attributs mutés. More...
 
virtual void write_stats (std::ofstream &os) const
 Écrit ses caractéristiques (attributs) dans un flux de fichier. More...
 
- Public Member Functions inherited from Vivante
 Vivante (std::string filename)
 Toutes les cases en * sont lues. More...
 
 Vivante (std::string filename, int x_min, int y_min)
 Toutes les cases en * sont lues. More...
 
 Vivante ()
 Vivante vide. More...
 
- Public Member Functions inherited from Entite
 Entite (std::string filename)
 Initialise l'Entite avec un fichier (* si case pleine) avec xmin,ymin = 0,0. More...
 
 Entite (std::string filename, int x_min, int y_min)
 Initialise l'Entite avec un fichier (* si case pleine) et les valeurs xmin et ymin. More...
 
 Entite ()
 Entite vide. More...
 
 Entite (std::list< Case > l, Map &m)
 Initialise l'Entite en ajoutant la liste de Case à une Map. More...
 
virtual ~Entite ()
 Pour bien vérifier leur destruction. More...
 
size_t nb_cases () const
 Nombre de cases de l'Entite. More...
 
int id ()
 Renvoie l'id de l'Entite. More...
 
virtual bool active ()
 Insique si l'Entite est toujours active, par défaut si elle contient encore des cases. More...
 
const std::list< Case > & get_cases () const
 Renvoie toutes les cases détenues par l'entite. More...
 
virtual bool hostile () const
 Renvoie si l'entite est hostile, false par défaut. More...
 
virtual void remove_case (const std::list< Case > &l, Map &ext)
 A UTILISER : Suprime une Case de l'Entite et d'une Map extérieure. More...
 
virtual void add_case (const std::list< Case > &c, Map &ext)
 A UTILISER : Ajoute une liste de Case à l'entite et une Map extérieure. More...
 
virtual void clear_it (Map &ext)
 A UTILISER : Enlève toutes les cases de l'Entite, sur une carte extéreure. More...
 
virtual std::string to_string () const
 Convertit la map en un string comme la disposition de ses cases marqués par une *. More...
 

Protected Member Functions

size_t muter (size_t arg) const
 Mute un truc. More...
 
std::vector< size_t > muter (std::vector< size_t >) const
 Mute un vector. More...
 
void step_add (Map &ext, std::map< int, Entite * > corr, const std::list< Entite * > &projectiles)
 Etape d'ajout des cases du step. More...
 
void step_remove (Map &ext, std::map< int, Entite * > corr, const std::list< Entite * > &projectiles)
 Etape de suppression des cases du step. More...
 
void show (Screen s)
 S'affiche en variation de violet à turquoise. More...
 
- Protected Member Functions inherited from Entite
virtual void add_case (int x, int y)
 Ajoute une Case à l'Entite avec ses coordonnées. More...
 
virtual void add_case (const Case &c)
 Ajoute une Case à l'Entite. More...
 
virtual void add_case (const std::list< Case > &c)
 Ajoute une Case à l'Entite avec ses coordonnées. More...
 
virtual void remove_case (const Case &c)
 Suprime une liste de Case de l'Entite. More...
 
virtual void remove_case (const std::list< Case > &l)
 Suprime une Case de l'Entite. More...
 
virtual void set_map ()
 Met à jour sa carte 2D à l'aide des sa liste de cases et de ses bordures. More...
 

Protected Attributes

size_t t_min
 La taille minimale autorisée (ne peut pas rétrécir en dessous) More...
 
size_t t_max
 La taille maximale autorisée (ne peut pas grandir au dessus) More...
 
size_t NB_ADD
 Nombre de cases à ajouter chaque step. More...
 
size_t NB_RM
 Nombre de cases à retirer chaque step. More...
 
size_t mutateur
 De quel pourcentage muter (Non opérationnel dans cette version) More...
 
- Protected Attributes inherited from Entite
int _id
 identifiant unique de l'entité More...
 
int time
 Nombre de steps qui ont été exécutés. More...
 
std::list< Casecases
 Liste des Case de l'entité More...
 
Map map
 La Map correspondante à la liste de ses cases. More...
 

Additional Inherited Members

- Static Protected Attributes inherited from Entite
static int cpt = 1
 Le compteur d'entités. More...
 

Detailed Description

Une fumée Vivante qui meurt si elle rencontre une Entite Hostile du Jeu, et dont le comportement est conçu pour les fuir.

Constructor & Destructor Documentation

Fumee_esquive::Fumee_esquive ( )

Construit tous ses attributs de manière aléatoire (bornes arbitraires)

Un Constructeur par défaut avec des valeurs arbitraires, non utilisé dans les simulation.

Fumee_esquive::Fumee_esquive ( size_t  t_min,
size_t  t_max,
size_t  NB_ADD,
size_t  NB_RM,
size_t  mutateur 
)
inline

Constructeur prenant dans l'ordre : t_min,t_max,NB_ADD,NB_RM,mutateur.

Member Function Documentation

std::list< Vivante * > Fumee_esquive::get_children ( Map ext,
const std::map< int, Entite * > &  corr 
) const
virtual

Crée 1 enfant avec une position aléatoire et des attributs mutés.

  • Les attributs de l'enfant proviennent d'une mutation de la mère
  • On ajoute l'enfant sur la Map extérieure

Reimplemented from Vivante.

size_t Fumee_esquive::muter ( size_t  arg) const
protected

Mute un truc.

std::vector< size_t > Fumee_esquive::muter ( std::vector< size_t >  v) const
protected

Mute un vector.

bool Fumee_esquive::should_greed ( const Map ext,
const std::map< int, Entite * > &  corr 
) const
virtual

Si on est assez loin des projectiles, on a plus de chance de se reproduire.

  • La probabilité de se reproduire :
  • Augmente avec la distance aux projectiles et la taille de la Fumée
  • Décroit avec le nombre de fumées déjà présentes dans le jeu

Reimplemented from Vivante.

void Fumee_esquive::show ( Screen  s)
protectedvirtual

S'affiche en variation de violet à turquoise.

Reimplemented from Entite.

void Fumee_esquive::step ( Map ext,
const std::map< int, Entite * > &  corr 
)
virtual

Avance d'un pas, appelle la fonction step2.

  • Incrémente le temps
  • Crée la liste des projectiles
  • Teste si la fumée doit mourrir (collision avec un Projectile)
  • Lance step_add et step_remove

Implements Entite.

void Fumee_esquive::step_add ( Map ext,
std::map< int, Entite * >  corr,
const std::list< Entite * > &  projectiles 
)
protected

Etape d'ajout des cases du step.

Ajouter les meileures cases

  • On associe chaque case de la brodure extérieure avec sa distance avec le projectile le plus proche
  • On trie cette table
  • On détermine le nombre de cases à ajouter (en fonction de l'écart avec la taille maximale)
  • On ajoute les meileures cases
void Fumee_esquive::step_remove ( Map ext,
std::map< int, Entite * >  corr,
const std::list< Entite * > &  projectiles 
)
protected

Etape de suppression des cases du step.

Retirer les pires cases

  • On associe chaque case de la brodure intérieure avec sa distance avec le projectile le plus proche
  • On trie cette table
  • On détermine le nombre de cases à retirer (en fonction de l'écart avec la taille minimale)
  • On retire les pires cases
std::string Fumee_esquive::type ( ) const
inlinevirtual

Le type d'une Fumee_esquive est "ESQUIVE".

Returns
"ESQUIVE"

Reimplemented from Vivante.

virtual void Fumee_esquive::write_stats ( std::ofstream &  os) const
inlinevirtual

Écrit ses caractéristiques (attributs) dans un flux de fichier.

Reimplemented from Entite.

Member Data Documentation

size_t Fumee_esquive::mutateur
protected

De quel pourcentage muter (Non opérationnel dans cette version)

size_t Fumee_esquive::NB_ADD
protected

Nombre de cases à ajouter chaque step.

size_t Fumee_esquive::NB_RM
protected

Nombre de cases à retirer chaque step.

size_t Fumee_esquive::t_max
protected

La taille maximale autorisée (ne peut pas grandir au dessus)

size_t Fumee_esquive::t_min
protected

La taille minimale autorisée (ne peut pas rétrécir en dessous)


The documentation for this class was generated from the following files: