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