"foreverdead" et "foreveralive" working
This commit is contained in:
commit
4df1d982d1
@ -220,7 +220,30 @@ bool GOLTeamH::setRule(std::string const& rule)
|
|||||||
//! **grille**.
|
//! **grille**.
|
||||||
void GOLTeamH::setBorderManagement(BorderManagement borderManagement)
|
void GOLTeamH::setBorderManagement(BorderManagement borderManagement)
|
||||||
{
|
{
|
||||||
mBorderManagement = borderManagement;
|
mBorderManagement = borderManagement; // On assigne la nouvelle stratégie
|
||||||
|
// Logique spécifique à chaque stratégie de gestion de bord
|
||||||
|
switch (borderManagement)
|
||||||
|
{
|
||||||
|
case BorderManagement::immutableAsIs:
|
||||||
|
// Aucune action nécessaire, les cellules du contour restent inchangées
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BorderManagement::foreverDead:
|
||||||
|
mData.setBorderValue(State::dead);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BorderManagement::foreverAlive:
|
||||||
|
mData.setBorderValue(State::alive);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BorderManagement::warping:
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case BorderManagement::mirror:
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,3 +133,22 @@ void GridTeamH::randomize(double percentAlive)
|
|||||||
i = CellType::dead;
|
i = CellType::dead;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Fonction qui attribue CellType aux case de la grille présent en bordure
|
||||||
|
//sans changer les autres case
|
||||||
|
void GridTeamH::setBorderValue(CellType initValue)
|
||||||
|
{
|
||||||
|
|
||||||
|
// Boucle pour parcourir chaque ligne de la grille
|
||||||
|
for (size_t row = 0; row < mHeight; row++) {
|
||||||
|
// Boucle pour parcourir chaque colonne de la grille
|
||||||
|
for (size_t col = 0; col < mWidth; col++) {
|
||||||
|
// Calcul de l'index dans la grille bidimensionnelle
|
||||||
|
size_t index = row * mWidth + col;
|
||||||
|
|
||||||
|
// Alternance de la valeur pour chaque cellule en fonction de la ligne et de la colonne
|
||||||
|
if (row == 0 || row == mHeight - 1 || col == 0 || col == mWidth - 1)
|
||||||
|
mData[index] = initValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -49,10 +49,11 @@ public:
|
|||||||
void fillAternately(CellType initValue);
|
void fillAternately(CellType initValue);
|
||||||
void randomize(double percentAlive);
|
void randomize(double percentAlive);
|
||||||
|
|
||||||
private: //
|
void setBorderValue(CellType value);
|
||||||
DataType mData; // Il y a des attributs essentiels au fonctionnement de cette classe.
|
|
||||||
size_t mWidth, mHeight; // À vous de les déterminer.
|
private:
|
||||||
// Pour la génération de nombres aléatoires
|
DataType mData;
|
||||||
|
size_t mWidth, mHeight; //hauteur et largeur de la grid
|
||||||
std::random_device mRandomDevice;
|
std::random_device mRandomDevice;
|
||||||
std::mt19937 mEngine;
|
std::mt19937 mEngine;
|
||||||
std::uniform_real_distribution<> mDistribution;
|
std::uniform_real_distribution<> mDistribution;
|
||||||
|
Loading…
Reference in New Issue
Block a user