From 826c6564389b01c236fc14cd6143982dd7f3a3e5 Mon Sep 17 00:00:00 2001
From: ppouchet <pierre.pouchet@etu.ec-lyon.fr>
Date: Mon, 24 Mar 2025 22:20:38 +0100
Subject: [PATCH] Ajout variables
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Variable NumberLetterButton (int) : stocke le nombre de lettres pour les mots à générer

Variable randomizeletterNumber (bool) : pour savoir si on veut que le nombre de lettres pour les mots générés soit aléatoire, prime sur letterNumber si randomizeletterNumber = true

Un combobox permet de modifier les variables
---
 Motus/CMakeLists.txt         |  1 +
 Motus/Main.qml               |  7 ++++++
 Motus/NumberLetterButton.qml | 41 ++++++++++++++++++++++++++++++
 Motus/motusgame.cpp          | 49 ++++++++++++++++++++++++++++++++++++
 Motus/motusgame.h            | 26 ++++++++++++++-----
 5 files changed, 118 insertions(+), 6 deletions(-)
 create mode 100644 Motus/NumberLetterButton.qml

diff --git a/Motus/CMakeLists.txt b/Motus/CMakeLists.txt
index f5a3c96..d1b3570 100644
--- a/Motus/CMakeLists.txt
+++ b/Motus/CMakeLists.txt
@@ -46,6 +46,7 @@ qt_add_qml_module(appMotus
         QML_FILES LangageButton.qml
         QML_FILES
         QML_FILES MotusTimer.qml
+        QML_FILES NumberLetterButton.qml
 )
 
 # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
diff --git a/Motus/Main.qml b/Motus/Main.qml
index a913fc8..47b5b22 100644
--- a/Motus/Main.qml
+++ b/Motus/Main.qml
@@ -478,5 +478,12 @@ Window {
             x: 502
             y: 73
         }
+
+        NumberLetterButton {
+            id: numberLetterButton
+            x: 704
+            y: 122
+
+        }
     }
 }
diff --git a/Motus/NumberLetterButton.qml b/Motus/NumberLetterButton.qml
new file mode 100644
index 0000000..4f40ac7
--- /dev/null
+++ b/Motus/NumberLetterButton.qml
@@ -0,0 +1,41 @@
+import QtQuick
+import QtQuick.Controls 2.15
+
+Item {
+    width: 100
+    height: 50
+    property alias comboBoxDisplayText: comboBox.displayText
+
+    Rectangle {
+        id: rectangle
+        x: 0
+        y: 0
+        width: 100
+        height: 50
+        color: "#fe8cf6"
+
+        ComboBox {
+            id: comboBox
+            x: 0
+            y: 0
+            width: 100
+            height: 50
+            flat: true
+            editable: true
+            model: ["aléatoire","5","6","7","8","9","10"]
+            displayText: "Number of letters"
+
+            onCurrentTextChanged: {
+                   if (typeof motusGame !== "undefined") {
+                       if (currentText === "aléatoire") {
+                           motusGame.randomizeLetterNumber = true;
+                       } else {
+                           motusGame.randomizeLetterNumber = false;
+                           motusGame.letterNumber = parseInt(currentText);
+                       }
+                   }
+               }
+    }
+
+}
+}
diff --git a/Motus/motusgame.cpp b/Motus/motusgame.cpp
index babb849..469d4a7 100644
--- a/Motus/motusgame.cpp
+++ b/Motus/motusgame.cpp
@@ -7,6 +7,8 @@
 #include <QDebug>
 
 
+// Constructeur //////////////////////////////////////////////////////////////////////////////////////////
+
 MotusGame::MotusGame(QObject *parent) : QObject(parent) {
     loadWords();
     qDebug() << "🔧 Connexion timer établie";
@@ -37,6 +39,7 @@ MotusGame::MotusGame(QObject *parent) : QObject(parent) {
 }
 
 
+// Générer un mot //////////////////////////////////////////////////////////////////////////////////////////
 
 void MotusGame::loadWords() {
     words.clear();
@@ -67,10 +70,15 @@ QString MotusGame::getRandomWord() {
 }
 
 
+// Changement de langue //////////////////////////////////////////////////////////////////////////////////////////
+
+
 QString MotusGame::getDictionnaryChoosed() const {
     return dictionnaryChoosed;
 }
 
+
+
 void MotusGame::setDictionnaryChoosed(const QString &value) {
     if (dictionnaryChoosed != value) {
         dictionnaryChoosed = value;
@@ -80,6 +88,7 @@ void MotusGame::setDictionnaryChoosed(const QString &value) {
     }
 }
 
+// Démarrer le timer //////////////////////////////////////////////////////////////////////////////////////////
 void MotusGame::startTimer() {
     qDebug() << "🔁 startTimer() appelé";
 
@@ -100,3 +109,43 @@ void MotusGame::startTimer() {
 int MotusGame::getRemainingTime() const {
     return remainingTime;
 }
+
+
+// Donner le nombre de lettres pour les mots à générer //////////////////////////////////////////////////////////////////////////////////////////
+
+int MotusGame::getLetterNumber() const {
+    return letterNumber;
+}
+
+void MotusGame::setLetterNumber(int value) {
+    if (letterNumber != value) {
+        letterNumber = value;
+        emit letterNumberChanged();
+        qDebug() << "🔤 Nouvelle valeur de letterNumber :" << letterNumber;
+    }
+}
+
+
+bool MotusGame::getRandomizeLetterNumber() const {
+    return randomizeletterNumber;
+}
+
+void MotusGame::setRandomizeLetterNumber(bool value) {
+    if (randomizeletterNumber != value) {
+        randomizeletterNumber = value;
+        emit randomizeLetterNumberChanged();
+        qDebug() << "🎲 randomizeLetterNumber =" << randomizeletterNumber;
+    }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Motus/motusgame.h b/Motus/motusgame.h
index 890e811..af60810 100644
--- a/Motus/motusgame.h
+++ b/Motus/motusgame.h
@@ -17,27 +17,40 @@ class MotusGame : public QObject {
 
     Q_PROPERTY(int remainingTime READ getRemainingTime NOTIFY timerUpdated)
 
+    Q_PROPERTY(int letterNumber READ getLetterNumber WRITE setLetterNumber NOTIFY letterNumberChanged)
+
+    Q_PROPERTY(bool randomizeLetterNumber READ getRandomizeLetterNumber WRITE setRandomizeLetterNumber NOTIFY randomizeLetterNumberChanged)
+
+
 public:
     explicit MotusGame(QObject *parent = nullptr);
     Q_INVOKABLE QString getRandomWord();
 
-    QString getDictionnaryChoosed() const;
+    QString getDictionnaryChoosed() const;                          //Pour le changement de mot à deviner
     void setDictionnaryChoosed(const QString &value);
 
 
-    Q_INVOKABLE void startTimer();
+    Q_INVOKABLE void startTimer();                                  //Pour le début du timer
     int getRemainingTime() const;
 
+    int getLetterNumber() const;                                    //Pour le nombre de lettres du mot qu'on veut générer
+    void setLetterNumber(int value);
+    bool getRandomizeLetterNumber() const;
+    void setRandomizeLetterNumber(bool value);
+
+
 
 private:
     QStringList words;
 
     QString motChoisi; // Mot choisi aléatoirement dans la liste, selon le nombre de lettres choisi par l'utilisateur
-    int letterNumber=7; // Nombre de lettres dans le mot, choisi par l'utilisateur
-    int tryNumber=0; // Nombre d'essais effectués, si tryNumber = nombre max, c'est perdu
-    QString dictionnaryChoosed="Motus\\words_alpha.txt"; // "Motus\\words_alpha.txt" ou "Motus\\mots_francais.txt"
 
+    int letterNumber; // 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
+
+    QString dictionnaryChoosed="Motus\\words_alpha.txt"; // "Motus\\words_alpha.txt" ou "Motus\\mots_francais.txt"
 
     QTimer *countdownTimer;
 
@@ -48,7 +61,8 @@ private:
 signals:
     void dictionnaryChoosedChanged();
     void timerUpdated();
-
+    void letterNumberChanged();
+    void randomizeLetterNumberChanged();
 
 
 };
-- 
GitLab