diff --git a/motus/grillemanager.cpp b/motus/grillemanager.cpp index d765f83ab3c69be180a26c325ede36ec6222e58d..a60e35f8e10f7fd9e27caf9270b2ebbbedbf3284 100644 --- a/motus/grillemanager.cpp +++ b/motus/grillemanager.cpp @@ -11,7 +11,7 @@ void GrilleManager::createGrid(int rows, int columns) { int totalCases = rows * columns; for (int i = 0; i < totalCases; ++i) { auto *vraieCase = new VraieCase(this); - vraieCase->setLetter('A' + (i % 26)); // Exemple : lettres de A à Z + vraieCase->setLetter(QChar('A' + (i % 26))); vraieCase->setEtat(i % 3); // Exemple : état cyclique (0,1,2) m_cases.append(vraieCase); } diff --git a/motus/ligne.cpp b/motus/ligne.cpp index 8bd795bbf1992e39d4564f45204b3c45fbb51090..f9af52843f501358ce432b9fa9be949581c98421 100644 --- a/motus/ligne.cpp +++ b/motus/ligne.cpp @@ -1,29 +1,34 @@ #include "ligne.h" #include "fullligneexception.h" #include "emptyligneexception.h" +#include <QString> Ligne::Ligne(string bonmot) : bonmot(bonmot) {} - void Ligne::initLigne() { - for (int i=0;i<bonmot.length();i++) { + for (int i = 0; i < bonmot.length(); i++) { contenu.push_back(new VraieCase()); } } bool Ligne::isGameCleared() { int nbjustes = 0; - for (int i=0;i<bonmot.length();i++) { - int etat = (contenu[i]->getLetter() == bonmot[i]) ? 0 : 1; - etat += Ligne::dansMot(contenu[i]->getLetter(), bonmot); + for (int i = 0; i < bonmot.length(); i++) { + QChar lettre = contenu[i]->getLetter().at(0); // récupérer le caractère + int etat = (lettre == bonmot[i]) ? 0 : 1; + etat += Ligne::dansMot(lettre, bonmot); contenu[i]->setEtat(etat); + + if (etat == 0) { + nbjustes++; + } } - return (nbjustes == 2*bonmot.length()); + return (nbjustes == bonmot.length()); } -bool Ligne::dansMot(char lettre, string mot) { - for (int i=0;i<mot.length();i++) { - if (mot[i] == lettre) { +bool Ligne::dansMot(QChar lettre, string mot) { + for (int i = 0; i < mot.length(); i++) { + if (lettre == QChar(mot[i])) { return true; } } @@ -34,7 +39,7 @@ void Ligne::entreLettre(char lettre) { if (positionCurseur == bonmot.length()) { throw FullLigneException(); } - contenu[positionCurseur]->setLetter(lettre); + contenu[positionCurseur]->setLetter(QChar(lettre)); // Conversion ici positionCurseur++; } @@ -42,6 +47,6 @@ void Ligne::supprLettre() { if (positionCurseur == 0) { throw EmptyLigneException(); } - contenu[positionCurseur - 1]->setLetter(' '); + contenu[positionCurseur - 1]->setLetter(QChar(' ')); positionCurseur--; } diff --git a/motus/ligne.h b/motus/ligne.h index 6f27e62ce5946419e273b478200e1965b72c8a1e..76de64d1bad2d8ab20ff0e195d4a8572148cff30 100644 --- a/motus/ligne.h +++ b/motus/ligne.h @@ -28,7 +28,7 @@ private: int taille; vector<VraieCase*> contenu; - static bool dansMot(char lettre, string mot); +static bool dansMot(QChar lettre, std::string mot); }; #endif // LIGNE_H diff --git a/motus/vraiecase.cpp b/motus/vraiecase.cpp index c2efba705d1e30f507ebc0c5f0f6c47478377976..39e89d78d8680e2606a5ac940e0385fa4966d4d9 100644 --- a/motus/vraiecase.cpp +++ b/motus/vraiecase.cpp @@ -1,19 +1,25 @@ #include "vraiecase.h" -VraieCase::VraieCase(QObject *parent) : lettre(' '), etat(0) {} +VraieCase::VraieCase(QObject *parent) : QObject(parent), lettre(""), etat(0) {} -char VraieCase::getLetter() const { return lettre; } -void VraieCase::setLetter(char letter) { +QString VraieCase::getLetter() const { + return lettre; +} + +void VraieCase::setLetter(const QString &letter) { if (lettre != letter) { lettre = letter; emit letterChanged(); } } -int VraieCase::getEtat() const { return etat; } -void VraieCase::setEtat(int etat) { - if (this->etat != etat) { - this->etat = etat; +int VraieCase::getEtat() const { + return etat; +} + +void VraieCase::setEtat(int e) { + if (etat != e) { + etat = e; emit etatChanged(); } } diff --git a/motus/vraiecase.h b/motus/vraiecase.h index 46bd1928eb797a945b5cb7d2ef854dcc27806d39..b8346da7ec9c022f155d45fe7c455a34f0d55a29 100644 --- a/motus/vraiecase.h +++ b/motus/vraiecase.h @@ -2,17 +2,18 @@ #define VRAIECASE_H #include <QObject> +#include <QString> class VraieCase : public QObject { Q_OBJECT - Q_PROPERTY(char letter READ getLetter WRITE setLetter NOTIFY letterChanged) + Q_PROPERTY(QString letter READ getLetter WRITE setLetter NOTIFY letterChanged) Q_PROPERTY(int etat READ getEtat WRITE setEtat NOTIFY etatChanged) public: explicit VraieCase(QObject *parent = nullptr); - char getLetter() const; - void setLetter(char letter); + QString getLetter() const; + void setLetter(const QString &letter); // Mise à jour du type int getEtat() const; void setEtat(int etat); @@ -22,7 +23,7 @@ signals: void etatChanged(); private: - char lettre; + QString lettre; int etat; };