From 8b9e5f15baf87323b9e7719648356668c229f4a7 Mon Sep 17 00:00:00 2001 From: amassies <alexandre.massies@etu.ec-lyon.fr> Date: Mon, 31 Mar 2025 08:11:18 +0200 Subject: [PATCH] verif mot existant (non focntionnel) --- Motus/Main.qml | 70 ++++++++++++++++++++++++++++++++------------- Motus/main.cpp | 3 +- Motus/motusgame.cpp | 16 +++++++++++ Motus/motusgame.h | 6 ++-- 4 files changed, 71 insertions(+), 24 deletions(-) diff --git a/Motus/Main.qml b/Motus/Main.qml index f668b7c..4ef854c 100644 --- a/Motus/Main.qml +++ b/Motus/Main.qml @@ -24,6 +24,7 @@ Window { property int nb_essais: arrayTry[nb_lettres - 4] property string mot: "" property var mot_split: [] + property var wordsByLength: motusGame.wordsByLength // Rectangle principal qui couvre la fenêtre Rectangle { @@ -58,31 +59,47 @@ Window { // On ne passe à la ligne suivante que si la ligne est complètement remplie console.log(indice_case); if (indice_case === nb_lettres) { - // Vérification de la proposition sur la ligne actuelle - for (var ind_verif = 0; ind_verif < nb_lettres; ind_verif++) { - var case_verif = caseArray[current_essai * nb_lettres + ind_verif]; - var lettre_verif = case_verif._textText; - if (lettre_verif === mot_split[ind_verif].toUpperCase()) { - case_verif.rectangleColor = "#42cc3d"; - case_verif.rectangleBordercolor = "#42cc3d"; - } else { - for (var j = 0; j < nb_lettres; j++) { - if (lettre_verif === mot_split[j].toUpperCase()) { - case_verif.rectangleColor = "#f0d437"; - case_verif.rectangleBordercolor = "#f0d437"; - break; + var mot_entre = ""; + for (var i = 0; i<nb_lettres; i++){ + mot_entre += caseArray[current_essai * nb_lettres + indice_case]; + } + + if (motusGame.existWord(QString(mot_entre)) === true){ + // Vérification de la proposition sur la ligne actuelle + for (i = 0; i < nb_lettres; i++) { + var case_verif = caseArray[current_essai * nb_lettres + i]; + var lettre_verif = case_verif._textText; + if (lettre_verif === mot_split[i].toUpperCase()) { + case_verif.rectangleColor = "#42cc3d"; + case_verif.rectangleBordercolor = "#42cc3d"; + } else { + for (var j = 0; j < nb_lettres; j++) { + if (lettre_verif === mot_split[j].toUpperCase()) { + case_verif.rectangleColor = "#f0d437"; + case_verif.rectangleBordercolor = "#f0d437"; + break; + } } } } + // Après vérification, passage à la ligne suivante si possible + if (current_essai < nb_essais - 1) { + current_essai++; + indice_case = 0; + } else { + // Fin de partie : vous pouvez désactiver l'interface ou afficher un message + mot = ""; + } } - // Après vérification, passage à la ligne suivante si possible - if (current_essai < nb_essais - 1) { - current_essai++; - indice_case = 0; - } else { - // Fin de partie : vous pouvez désactiver l'interface ou afficher un message - mot = ""; + else{ + for (i = 0; i < nb_lettres; i++) { + case_verif = caseArray[current_essai * nb_lettres + i]; + case_verif.rectangleColor = "#cf1b2a"; + case_verif.rectangleBordercolor = "#cf1b2a"; + revertTimer.start(); + } } + event.accepted = true; } } @@ -90,6 +107,19 @@ Window { } // Disposition globale en colonne + Timer { + id: revertTimer + interval: 1000 // 1 seconde (1000 millisecondes) + repeat: false // Ne se répète pas + onTriggered: { + // Réinitialiser la couleur + for (i = 0; i < nb_lettres; i++) { + case_verif = caseArray[current_essai * nb_lettres + i]; + case_verif.rectangleColor = "#323232"; + case_verif.rectangleBordercolor = "#ffffff"; + } + } + } Row { id: main_row diff --git a/Motus/main.cpp b/Motus/main.cpp index f6bb3b7..8cec14f 100644 --- a/Motus/main.cpp +++ b/Motus/main.cpp @@ -23,7 +23,6 @@ int main(int argc, char *argv[]) []() { QCoreApplication::exit(-1); }, Qt::QueuedConnection); - engine.loadFromModule("Motus", "Main"); - + engine.load(QUrl("qrc:/qt/qml/Motus/Main.qml")); return app.exec(); } diff --git a/Motus/motusgame.cpp b/Motus/motusgame.cpp index 4d12f5f..8ef5e58 100644 --- a/Motus/motusgame.cpp +++ b/Motus/motusgame.cpp @@ -69,6 +69,22 @@ void MotusGame::loadWords() { } } +bool MotusGame::existWord(const QString &word) { + int n = word.size(); + bool exists = false; + + // Supposons que wordsByLength est un QMap<int, QStringList> + const QStringList &list = wordsByLength[n]; + for (int i = 0; i < list.size(); i++) { + if (list[i] == word) { + exists = true; + break; // On arrête la recherche dès qu'on trouve le mot + } + } + + return exists; +} + QString MotusGame::getRandomWord(int letterCount) { // Vérifier que le nombre de lettres est dans l'intervalle autorisé if (letterCount < 4 || letterCount > 12) { diff --git a/Motus/motusgame.h b/Motus/motusgame.h index 1fcee8f..96d2399 100644 --- a/Motus/motusgame.h +++ b/Motus/motusgame.h @@ -38,6 +38,7 @@ public: void setLetterNumber(int value); bool getRandomizeLetterNumber() const; void setRandomizeLetterNumber(bool value); + bool existWord(const QString &word); @@ -48,10 +49,11 @@ private: QMap<int, QStringList> wordsByLength; - int letterNumber; // Nombre de lettres dans le mot, choisi par l'utilisateur + int letterNumber = 5; // Nombre de lettres dans le mot, choisi par l'utilisateur bool randomizeletterNumber = true; - int tryNumber=0; // Nombre d'essais effectués, si tryNumber = nombre max, c'est perdu + int tryTotal=6; // Nombre d'essais total + int tryNumber=0; QString dictionnaryChoosed="Motus\\words_alpha.txt"; // "Motus\\words_alpha.txt" ou "Motus\\mots_francais.txt" -- GitLab