From e0213c67bfac783726c0a983365dbb2e629e20d7 Mon Sep 17 00:00:00 2001
From: ppouchet <pierre.pouchet@etu.ec-lyon.fr>
Date: Sat, 22 Mar 2025 10:46:31 +0100
Subject: [PATCH] Ajout classe Wordchooser
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

une instance de cette classe contiendra le mot à deviner, pour l'instant un clic sur le bouton est censé choisir un mot mais cela ne marche pas
---
 Motus/CMakeLists.txt  |  1 +
 Motus/Main.qml        |  8 +++++++-
 Motus/main.cpp        |  8 +++++++-
 Motus/wordchooser.cpp | 30 ++++++++++++++++++++++++++++++
 Motus/wordchooser.h   | 19 +++++++++++++++++++
 5 files changed, 64 insertions(+), 2 deletions(-)
 create mode 100644 Motus/wordchooser.cpp
 create mode 100644 Motus/wordchooser.h

diff --git a/Motus/CMakeLists.txt b/Motus/CMakeLists.txt
index f27c311..12c3cd0 100644
--- a/Motus/CMakeLists.txt
+++ b/Motus/CMakeLists.txt
@@ -23,6 +23,7 @@ qt_add_qml_module(appMotus
         QML_FILES Key.qml
         QML_FILES BackKey.qml
         QML_FILES Bouton.qml
+        SOURCES wordchooser.h wordchooser.cpp
 )
 
 # Qt for iOS sets MACOSX_BUNDLE_GUI_IDENTIFIER automatically since Qt 6.1.
diff --git a/Motus/Main.qml b/Motus/Main.qml
index 25eb496..563a7fa 100644
--- a/Motus/Main.qml
+++ b/Motus/Main.qml
@@ -42,7 +42,13 @@ Window {
                 y: 0
                 width: 400
                 height: 200
-                onClicked: case3._textColor="#51c3e1"
+                onClicked: {
+                    let mot = wordChooser.getRandomWord();
+                    console.log("Mot choisi :", mot);
+                    case3._textText = mot;
+                    onClicked: case3._textColor="#51c3e1";
+                }
+
 
                 Case {
                     id: case3
diff --git a/Motus/main.cpp b/Motus/main.cpp
index c1e254b..a365692 100644
--- a/Motus/main.cpp
+++ b/Motus/main.cpp
@@ -1,19 +1,25 @@
 #include <QGuiApplication>
 #include <QQmlApplicationEngine>
+#include <QQmlContext>
+#include "WordChooser.h"
 
 int main(int argc, char *argv[])
 {
     QGuiApplication app(argc, argv);
 
     QQmlApplicationEngine engine;
+
+    WordChooser wordChooser;
+    engine.rootContext()->setContextProperty("wordChooser", &wordChooser);
+
     QObject::connect(
         &engine,
         &QQmlApplicationEngine::objectCreationFailed,
         &app,
         []() { QCoreApplication::exit(-1); },
         Qt::QueuedConnection);
+
     engine.loadFromModule("Motus", "Main");
 
     return app.exec();
 }
-
diff --git a/Motus/wordchooser.cpp b/Motus/wordchooser.cpp
new file mode 100644
index 0000000..0f48767
--- /dev/null
+++ b/Motus/wordchooser.cpp
@@ -0,0 +1,30 @@
+#include "WordChooser.h"
+#include <QFile>
+#include <QTextStream>
+#include <QRandomGenerator>
+QFile file("words_alpha.txt");
+
+WordChooser::WordChooser(QObject *parent) : QObject(parent) {
+    loadWords();
+}
+
+void WordChooser::loadWords() {
+    QFile file(":/words_alpha.txt"); // adapte le chemin si besoin
+    if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+        QTextStream in(&file);
+        while (!in.atEnd()) {
+            QString line = in.readLine().trimmed();
+            if (!line.isEmpty())
+                words.append(line);
+        }
+        file.close();
+    }
+}
+
+QString WordChooser::getRandomWord() {
+    if (words.isEmpty())
+        return "";
+    int index = QRandomGenerator::global()->bounded(words.size());
+    return words[index];
+}
+
diff --git a/Motus/wordchooser.h b/Motus/wordchooser.h
new file mode 100644
index 0000000..f04fb5f
--- /dev/null
+++ b/Motus/wordchooser.h
@@ -0,0 +1,19 @@
+#ifndef WORDCHOOSER_H
+#define WORDCHOOSER_H
+
+#include <QObject>
+#include <QString>
+#include <QStringList>
+
+class WordChooser : public QObject {
+    Q_OBJECT
+public:
+    explicit WordChooser(QObject *parent = nullptr);
+    Q_INVOKABLE QString getRandomWord();
+
+private:
+    QStringList words;
+    void loadWords();
+};
+
+#endif // WORDCHOOSER_H
-- 
GitLab