diff --git a/Motus/CMakeLists.txt b/Motus/CMakeLists.txt index f5a3c96b4a3dbdda6eabf5212be71c013aca1a7a..d1b3570cc1b678114759a0fb9b6e082998d454d9 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 a913fc8bd841e0d66e4182c3d47e1fe1b14755a0..47b5b22ba6c46fcb6fb7f200ec3c6d677642df45 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 0000000000000000000000000000000000000000..4f40ac7beaff36f54007466f4023cc5a37180b9e --- /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 babb849064a76ed21dc15f7bdb88da7356ff08a0..469d4a781cdda0b45c915cfd5f52ff6c09ee0825 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 890e81109924a8c7680e1ba7e19cb3aa77362a3f..af6081091a8a55f340be74f41652a84522361af8 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(); };