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