set Pattern ne fonctionn que pour des [XXxXX] et pas pour des [XxX] à corriger

This commit is contained in:
Martin Euzenat 2024-01-25 00:34:59 -05:00
parent 32abf070d0
commit be18110c1d

View File

@ -411,25 +411,21 @@ bool GOLTeamH::setFromPattern(std::string const& pattern)
std::cerr << "Erreur de format : 'x' manquant." << std::endl; std::cerr << "Erreur de format : 'x' manquant." << std::endl;
return false; return false;
} }
pos++;
// Lecture de la hauteur // Lecture de la hauteur
size_t height = std::stoi(pattern.substr(pos), &pos); size_t height = std::stoi(pattern.substr(pos), &pos);
pos = pos + 4;
if (height <= 0) { if (height <= 0) {
std::cerr << "Erreur de format : Hauteur invalide." << std::endl; std::cerr << "Erreur de format : Hauteur invalide." << std::endl;
return false; return false;
} }
pos++;
// Vérification du ']' // Vérification du ']'
if (static_cast<char>(pattern[pos++]) != ']') { if (static_cast<char>(pattern[pos++]) != ']') {
std::cerr << "Erreur de format : ']' manquant." << std::endl; std::cerr << "Erreur de format : ']' manquant." << std::endl;
return false; return false;
} }
pos++; pos++;
// Vérification de la taille du reste du pattern
if (pattern.length() - pos != width * height) {
std::cerr << "Erreur de format : Taille du patron incorrecte." << std::endl;
return false;
}
size_t centerX = mData.width() / 2; size_t centerX = mData.width() / 2;
size_t centerY = mData.height() / 2; size_t centerY = mData.height() / 2;
@ -437,6 +433,7 @@ bool GOLTeamH::setFromPattern(std::string const& pattern)
for (size_t y = 0; y < height; ++y) { for (size_t y = 0; y < height; ++y) {
for (size_t x = 0; x < width; ++x) { for (size_t x = 0; x < width; ++x) {
char cellChar = pattern[pos++]; char cellChar = pattern[pos++];
mData.setAt(centerX + x, centerY + y, State::dead);
State cellState = (cellChar == '0') ? State::dead : State::alive; State cellState = (cellChar == '0') ? State::dead : State::alive;
mData.setAt(centerX + x, centerY + y, cellState); mData.setAt(centerX + x, centerY + y, cellState);
} }