From aa5d1ff9e6a539122b634cd69d6fefea060afc44 Mon Sep 17 00:00:00 2001 From: Yanis Dziki <yanis.dziki@ens-lyon.fr> Date: Fri, 11 Apr 2025 15:25:38 +0200 Subject: [PATCH] Change char / string en Qchar/ Qstring --- motus/grillemanager.cpp | 2 +- motus/ligne.cpp | 27 ++++++++++++++++----------- motus/ligne.h | 2 +- motus/vraiecase.cpp | 20 +++++++++++++------- motus/vraiecase.h | 9 +++++---- 5 files changed, 36 insertions(+), 24 deletions(-) diff --git a/motus/grillemanager.cpp b/motus/grillemanager.cpp index d765f83..a60e35f 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 8bd795b..f9af528 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 6f27e62..76de64d 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 c2efba7..39e89d7 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 46bd192..b8346da 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; }; -- GitLab