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 | Friends | List of all members
Map Class Reference

Une Map contient un vecteur d'entiers en 2 dimensions et dispose de bcp de fonctions utiles. More...

#include <Map.h>

Collaboration diagram for Map:
Collaboration graph

Public Member Functions

 Map (const std::list< Case > &liste_cases)
 
 Map ()
 Par défaut, carte de taille 1. More...
 
 Map (const Case &min, const Case &max)
 Map avec les bords min et maxy. More...
 
bool inside (int x, int y) const
 Indique si les coordonnées sont dans la map. More...
 
bool inside (const Case &c) const
 Indique si la case est dans la map. More...
 
int get (int x, int y) const
 Retourne l'entier correspondant à la position. More...
 
int get (const Case &c) const
 Retourne l'entier correspondant à la position. More...
 
int operator() (int x, int y) const
 Renvoie la valeur de la position x,y. More...
 
int operator() (const Case &c) const
 Renvoie la valeur de la position c. More...
 
Case random_inside (int bordure=0) const
 Retourne une Case aléatoire dans la map. More...
 
Case random_bordure () const
 Retourne une Case aléatoire sur la frontière de la map. More...
 
bool add_cases (const std::list< Case > &l, int id)
 Ajoute une liste de cases de l'id à la carte. More...
 
bool remove_cases (const std::list< Case > &l, int id)
 Retire une liste de cases de l'id de la carte. More...
 
int nb_case (int rad, const Case &c) const
 Nombre de positions non nulles dans un rayon rad autour de la Case c. More...
 
bool one_case (int val, const Case &c) const
 Indique s'il y a au moins une case égale à val dans l'entourage de 4 de c. More...
 
std::list< Caseget_in_bounds () const
 Frontière intérieure de la map. More...
 
std::list< Caseget_ext_bounds () const
 Frontière extérieure de la map. More...
 
std::string string_map () const
 Transforme la map en string de *. More...
 
std::string string_map_plus (const std::list< Case > &plus, char car) const
 Transforme la première liste en * et la deuxième en caractère choisi. More...
 
void contigues (const Case &c, std::set< Case > &toutes)
 Complete l'ensemble de Case toutes par toutes les Case contiues à la c dans la Map. More...
 
std::list< Casecontigues (const Case &c)
 Retourne les cases contigues en liste. More...
 

Protected Member Functions

bool set (int x, int y, int val)
 Met la valeur val à la position x,y. More...
 
bool set (const Case &c, int val)
 Met la valeur val à la position c. More...
 

Protected Attributes

std::vector< std::vector< int > > map
 La carte. More...
 
Case min
 Case du bord inférieur. More...
 
Case max
 Case du bord supérieur. More...
 

Friends

class Jeu
 Le Jeu est friend pour pouvoir lire facilement sa map. More...
 
class ProjectileGame
 A retirer à l'avenir. More...
 
std::ostream & operator<< (std::ostream &os, const Map &map)
 Affiche une Map en 2D avec des *. More...
 
std::ostream & operator<< (std::ostream &os, const std::list< Case > &liste_cases)
 Affiche une liste de cases en 2D avec des *. More...
 

Detailed Description

Une Map contient un vecteur d'entiers en 2 dimensions et dispose de bcp de fonctions utiles.

Constructor & Destructor Documentation

Map::Map ( const std::list< Case > &  liste_cases)

Constructeur qui fixe ses limites avec les min et max de la liste et place chaque case de la liste avec des 1

Map::Map ( )
inline

Par défaut, carte de taille 1.

Map::Map ( const Case min,
const Case max 
)
inline

Map avec les bords min et maxy.

Member Function Documentation

bool Map::add_cases ( const std::list< Case > &  l,
int  id 
)

Ajoute une liste de cases de l'id à la carte.

void Map::contigues ( const Case c,
std::set< Case > &  toutes 
)

Complete l'ensemble de Case toutes par toutes les Case contiues à la c dans la Map.

Fonction récursive :

  • Si la Case c n'est pas déjà dans toutes :
  • . On insère c à toutes, et pour chaque Case a autour de c :
  • .. Si la valeur de la position a est la même que celle de la case c:
  • ... On éxécute la fonction sur a
std::list< Case > Map::contigues ( const Case c)

Retourne les cases contigues en liste.

Obtient simplement le set des cases grâce à la fonction contigues précédente et le transforme en liste

int Map::get ( int  x,
int  y 
) const

Retourne l'entier correspondant à la position.

int Map::get ( const Case c) const
inline

Retourne l'entier correspondant à la position.

std::list< Case > Map::get_ext_bounds ( ) const

Frontière extérieure de la map.

  • Pour chaque position $(i,j)$ de la map :
  • . Si la position est vide ou en dehors de la carte :
  • .. S'il y a au moins une case pleine autour, on ajoute cette position
std::list< Case > Map::get_in_bounds ( ) const

Frontière intérieure de la map.

  • Pour chaque position $(i,j)$ de la map :
  • . Si la position n'est pas vide :
  • .. S'il y a au moins une case vide autour, on ajoute cette position
bool Map::inside ( int  x,
int  y 
) const

Indique si les coordonnées sont dans la map.

bool Map::inside ( const Case c) const
inline

Indique si la case est dans la map.

int Map::nb_case ( int  rad,
const Case c 
) const

Nombre de positions non nulles dans un rayon rad autour de la Case c.

  • On parcours les positions de $(x_c-rad,y_c-rad)$ à $(x_c+rad,y_c+rad)$
  • . Si $(i,j)$ est bien dans le rayon : $(x_c-i)^2 + (y_c-i)^2 < rad^2$
  • .. On ajoute 1 si cette position n'est pas nulle
bool Map::one_case ( int  val,
const Case c 
) const

Indique s'il y a au moins une case égale à val dans l'entourage de 4 de c.

  • Pour chaque Case à gauche, droite, haut et bas de c :
  • . Si sur cette position on a val, renvoyer vrai
int Map::operator() ( int  x,
int  y 
) const

Renvoie la valeur de la position x,y.

int Map::operator() ( const Case c) const

Renvoie la valeur de la position c.

Case Map::random_bordure ( ) const

Retourne une Case aléatoire sur la frontière de la map.

Case Map::random_inside ( int  bordure = 0) const
inline

Retourne une Case aléatoire dans la map.

bool Map::remove_cases ( const std::list< Case > &  l,
int  id 
)

Retire une liste de cases de l'id de la carte.

bool Map::set ( int  x,
int  y,
int  val 
)
protected

Met la valeur val à la position x,y.

<<<<<<<<<<<<<<<<<<<<<<< SETTERS >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

bool Map::set ( const Case c,
int  val 
)
inlineprotected

Met la valeur val à la position c.

std::string Map::string_map ( ) const

Transforme la map en string de *.

std::string Map::string_map_plus ( const std::list< Case > &  plus,
char  car 
) const

Transforme la première liste en * et la deuxième en caractère choisi.

Friends And Related Function Documentation

friend class Jeu
friend

Le Jeu est friend pour pouvoir lire facilement sa map.

std::ostream& operator<< ( std::ostream &  os,
const Map map 
)
friend

Affiche une Map en 2D avec des *.

std::ostream& operator<< ( std::ostream &  os,
const std::list< Case > &  liste_cases 
)
friend

Affiche une liste de cases en 2D avec des *.

Transforme la liste en Map et affiche celle-ci

friend class ProjectileGame
friend

A retirer à l'avenir.

Member Data Documentation

std::vector<std::vector<int> > Map::map
protected

La carte.

Case Map::max
protected

Case du bord supérieur.

Case Map::min
protected

Case du bord inférieur.


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