"foreverdead" et "foreveralive" working

This commit is contained in:
Martin Euzenat 2024-01-20 02:24:35 -05:00
commit 4df1d982d1
3 changed files with 48 additions and 5 deletions

View File

@ -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;
}
} }

View File

@ -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;
}
}
}

View File

@ -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;