blob: 2ba155c5596cfacf265d596a2acb6789c2efae98 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
#ifndef __POPULATION_VIVANTE_H
#define __POPULATION_VIVANTE_H
#include "cellule.h"
#define NMAX 10000
class PopulationVivante {
private:
Cellule T[NMAX];
size_t alive;
size_t N;
float probability;
// retourne le nbr de voisins vivants de la cellule à (i,j)
size_t nb_voisins_vivants(size_t, size_t) const;
// access to cell at (i,j) if not alive get NULL
const Cellule* at(size_t i, size_t j)const;
Cellule* at(size_t i, size_t j);
// Mise à jour des couleurs des cellules mourantes
void updateColors();
size_t nb_cellules(Cellule::Couleur c) const;
public:
// construction d'une n-population avec une probabilité fixée.
PopulationVivante(size_t n, float prob);
// accesseurs en interrogation
size_t nb_vivants() const;
size_t nb_deces() const;
size_t nb_morts() const;
size_t nb_naissances() const;
size_t getDimension() const;
float getProbability() const;
// accesseurs en lecture d'une cellule
Cellule getCelluleCopie(size_t i, size_t j) const;
// accesseurs en modification
void kill(size_t i, size_t j);
void birth(size_t i, size_t j);
void setDimension(size_t n);
void setProbability(float p);
// affichage d'une cellule
void printCell(size_t i, size_t j) const;
// affichage de la population
void print() const;
// Re-création de la population
void reset();
// calcul de la population suivante
PopulationVivante next() const;
};
#endif
|