Skip to content
Snippets Groups Projects
Commit 1128a833 authored by Ulysse Durand's avatar Ulysse Durand
Browse files

merged

parents a79b47c5 e6f8b0eb
Branches
No related tags found
No related merge requests found
...@@ -4,7 +4,12 @@ ...@@ -4,7 +4,12 @@
#include <iostream> #include <iostream>
#include <filesystem> #include <filesystem>
#include "grillemanager.h" #include "grillemanager.h"
<<<<<<< HEAD
#include "fullligneexception.h" #include "fullligneexception.h"
=======
#include <QString>
>>>>>>> e6f8b0eb13207f90ae4ed37356359f928e941f2a
using namespace std; using namespace std;
namespace fs = std::filesystem; namespace fs = std::filesystem;
...@@ -91,8 +96,8 @@ void Brain::setNombreEssais(int nbEssais) {mNbEssaisMax = nbEssais;} ...@@ -91,8 +96,8 @@ void Brain::setNombreEssais(int nbEssais) {mNbEssaisMax = nbEssais;}
void Brain::setTailleMots(int tailleMot) {mTailleMot = tailleMot;} void Brain::setTailleMots(int tailleMot) {mTailleMot = tailleMot;}
string Brain::getMot() {return mot;} string Brain::getMot() {return mot;}
void Brain::initGame() { void Brain::initGame() {
// Appelé lorsqu'on appuie sur le bouton Start Game
try { try {
trouveMot(); trouveMot();
cout << "Réponse : ["; cout << "Réponse : [";
...@@ -104,15 +109,19 @@ void Brain::initGame() { ...@@ -104,15 +109,19 @@ void Brain::initGame() {
lignes.push_back(new Ligne(getMot())); lignes.push_back(new Ligne(getMot()));
lignes[i]->initLigne(); lignes[i]->initLigne();
} }
}
catch (NoWordException e) { // Convertir std::string (getMot()) en QString
QString motQString = QString::fromStdString(getMot()); // Conversion de std::string en QString
GrilleManager grille(motQString); // Passer le QString à GrilleManager
grille.createGrid(mNbEssaisMax, mTailleMot); // Créer la grille
} catch (NoWordException e) {
cout << e.what() << endl; cout << e.what() << endl;
} }
GrilleManager grille;
grille.createGrid(mNbEssaisMax, mTailleMot);
} }
void Brain::validateWord() { void Brain::validateWord() {
// Appelé lorsqu'on appuie sur le bouton validate du clavier // Appelé lorsqu'on appuie sur le bouton validate du clavier
cout << "Validation de la ligne !" << endl; cout << "Validation de la ligne !" << endl;
......
#include "grillemanager.h" #include "grillemanager.h"
GrilleManager::GrilleManager(QObject *parent) : QObject(parent) { GrilleManager::GrilleManager(const QString &mot, QObject *parent)
// Initialisation avec une grille vide : QObject(parent), m_mot(mot) {
m_cases.clear(); // Initialisation de la grille (si tu veux le faire immédiatement dans le constructeur)
createGrid(6, m_mot.length()); // Exemple : 6 essais, longueur du mot
} }
void GrilleManager::createGrid(int rows, int columns) { void GrilleManager::createGrid(int rows, int columns) {
m_cases.clear(); // Vide la grille avant de la remplir m_cases.clear(); // Vide la grille avant de la remplir
int totalCases = rows * columns; // Remplir la grille avec des cases
for (int i = 0; i < totalCases; ++i) { for (int i = 0; i < rows * columns; ++i) {
auto *vraieCase = new VraieCase(this); VraieCase *vraieCase = new VraieCase(this);
vraieCase->setLetter('_'); // Exemple : lettres de A à Z
vraieCase->setEtat(0); // Exemple : état cyclique (0,1,2) // Si on est à la première case, on met la première lettre du mot, sinon on met '_'
if (i < m_mot.length()) {
vraieCase->setLetter(m_mot[i]); // Conversion automatique depuis QString
} else {
vraieCase->setLetter(QString("_")); // Conversion du char '_' en QString
}
vraieCase->setEtat(0); // Tu peux définir l'état comme tu veux
m_cases.append(vraieCase); m_cases.append(vraieCase);
} }
emit casesChanged(); emit casesChanged(); // Émettre le signal pour indiquer que la grille a changé
} }
QQmlListProperty<VraieCase> GrilleManager::getCases() { QQmlListProperty<VraieCase> GrilleManager::getCases() {
......
...@@ -10,18 +10,16 @@ class GrilleManager : public QObject { ...@@ -10,18 +10,16 @@ class GrilleManager : public QObject {
Q_PROPERTY(QQmlListProperty<VraieCase> cases READ getCases NOTIFY casesChanged) Q_PROPERTY(QQmlListProperty<VraieCase> cases READ getCases NOTIFY casesChanged)
public: public:
explicit GrilleManager(QObject *parent = nullptr); explicit GrilleManager(const QString &mot, QObject *parent = nullptr); // Le mot en argument
void createGrid(int rows, int columns); // Créer la grille
// Fonction pour créer une grille de taille variable QQmlListProperty<VraieCase> getCases(); // Obtenir les cases
Q_INVOKABLE void createGrid(int rows, int columns);
QQmlListProperty<VraieCase> getCases();
signals: signals:
void casesChanged(); void casesChanged();
private: private:
QList<VraieCase*> m_cases; QString m_mot;
QList<VraieCase *> m_cases; // Liste des cases de la grille
}; };
#endif // GRILLEMANAGER_H #endif // GRILLEMANAGER_H
#include "jeu.h" #include "jeu.h"
#include <iostream> #include <iostream>
Jeu::Jeu(QObject *parent) : QObject(parent), brain("./") {
mot = QString::fromStdString(brain.getMot()); // ✅ Conversion std::string → QString Jeu::Jeu(QObject *parent) : QObject(parent), brain("./"), grilleManager("", this) {
}
std::cout << "Mot choisi : " << mot.toStdString() << std::endl; void Jeu::setMot(const QString& mot) {
this->mot = mot;
grilleManager.createGrid(mot.length(), 1); // Utilise la longueur du mot pour la grille
emit motChanged();
} }
QString Jeu::getMotAffiche() {
if (mot.isEmpty()) return "";
QString affichage = QString(mot.at(0)); QString Jeu::getMotAffiche() {
for (int i = 1; i < mot.length(); ++i) { return mot;
affichage += " _";
}
return affichage;
} }
void Jeu::onClavierClick(QString lettre) { void Jeu::onClavierClick(QString lettre) {
brain.entreLettre(lettre.toStdString()[0]); brain.entreLettre(lettre.toStdString()[0]);
} }
...@@ -31,8 +30,8 @@ void Jeu::initGame() { ...@@ -31,8 +30,8 @@ void Jeu::initGame() {
void Jeu::startGame() { void Jeu::startGame() {
brain.setFichierDico("words_alpha.txt"); brain.setFichierDico("words_alpha.txt");
brain.setNombreEssais(6); // ou ce que tu veux brain.setNombreEssais(6);
brain.setTailleMots(5); // idem brain.setTailleMots(5);
brain.initGame(); brain.initGame();
......
...@@ -16,9 +16,9 @@ public: ...@@ -16,9 +16,9 @@ public:
Q_INVOKABLE void onClavierClick(QString lettre); Q_INVOKABLE void onClavierClick(QString lettre);
Q_INVOKABLE void initGame(); Q_INVOKABLE void initGame();
Q_INVOKABLE void startGame(); // pour init depuis QML Q_INVOKABLE void startGame(); // pour init depuis QML
Q_INVOKABLE void setMot(const QString& mot); // Ajouter cette méthode pour définir le mot
GrilleManager* getGrilleManager() { return &grilleManager; } GrilleManager* getGrilleManager() { return &grilleManager; }
signals: signals:
void motChanged(); void motChanged();
......
#include "ligne.h" #include "ligne.h"
#include "fullligneexception.h" #include "fullligneexception.h"
#include "emptyligneexception.h" #include "emptyligneexception.h"
<<<<<<< HEAD
#include "iostream" #include "iostream"
#include <cctype> #include <cctype>
using namespace std; using namespace std;
=======
#include <QString>
>>>>>>> e6f8b0eb13207f90ae4ed37356359f928e941f2a
Ligne::Ligne(string bonmot) : bonmot(bonmot), positionCurseur(0) {} Ligne::Ligne(string bonmot) : bonmot(bonmot), positionCurseur(0) {}
void Ligne::initLigne() { void Ligne::initLigne() {
for (int i = 0; i < bonmot.length(); i++) { for (int i = 0; i < bonmot.length(); i++) {
contenu.push_back(new VraieCase()); contenu.push_back(new VraieCase());
...@@ -50,7 +53,7 @@ void Ligne::entreLettre(char lettre) { ...@@ -50,7 +53,7 @@ void Ligne::entreLettre(char lettre) {
if (positionCurseur == bonmot.length()) { if (positionCurseur == bonmot.length()) {
throw FullLigneException(); throw FullLigneException();
} }
contenu[positionCurseur]->setLetter(lettre); contenu[positionCurseur]->setLetter(QChar(lettre)); // Conversion ici
positionCurseur++; positionCurseur++;
} }
...@@ -59,6 +62,6 @@ void Ligne::supprLettre() { ...@@ -59,6 +62,6 @@ void Ligne::supprLettre() {
throw EmptyLigneException(); throw EmptyLigneException();
} }
cout << "Suppression d'une lettre" << endl; cout << "Suppression d'une lettre" << endl;
contenu[positionCurseur - 1]->setLetter(' '); contenu[positionCurseur - 1]->setLetter(QChar(' '));
positionCurseur--; positionCurseur--;
} }
...@@ -29,7 +29,7 @@ private: ...@@ -29,7 +29,7 @@ private:
int taille; int taille;
vector<VraieCase*> contenu; vector<VraieCase*> contenu;
static bool dansMot(char lettre, string mot); static bool dansMot(QChar lettre, std::string mot);
}; };
#endif // LIGNE_H #endif // LIGNE_H
...@@ -9,13 +9,14 @@ int main(int argc, char *argv[]) { ...@@ -9,13 +9,14 @@ int main(int argc, char *argv[]) {
QGuiApplication app(argc, argv); QGuiApplication app(argc, argv);
QQmlApplicationEngine engine; QQmlApplicationEngine engine;
qmlRegisterType<VraieCase>("motus", 1, 0, "VraieCase"); qmlRegisterType<VraieCase>("motus", 1, 0, "VraieCase");
qmlRegisterType<GrilleManager>("motus", 1, 0, "GrilleManager"); qmlRegisterType<GrilleManager>("motus", 1, 0, "GrilleManager");
// Créer l'objet Jeu sans mot
Jeu jeu; Jeu jeu;
engine.rootContext()->setContextProperty("jeu", &jeu); engine.rootContext()->setContextProperty("jeu", &jeu);
// Charger l'interface utilisateur (QML)
engine.loadFromModule("motus", "Main"); engine.loadFromModule("motus", "Main");
return app.exec(); return app.exec();
......
#include "vraiecase.h" #include "vraiecase.h"
VraieCase::VraieCase(QObject *parent) : lettre(' '), etat(0) {} VraieCase::VraieCase(QObject *parent) : QObject(parent), lettre(""), etat(0) {}
char VraieCase::getLetter() const { return lettre; } QString VraieCase::getLetter() const {
void VraieCase::setLetter(char letter) { return lettre;
}
void VraieCase::setLetter(const QString &letter) {
if (lettre != letter) { if (lettre != letter) {
lettre = letter; lettre = letter;
emit letterChanged(); emit letterChanged();
} }
} }
int VraieCase::getEtat() const { return etat; } int VraieCase::getEtat() const {
void VraieCase::setEtat(int etat) { return etat;
if (this->etat != etat) { }
this->etat = etat;
void VraieCase::setEtat(int e) {
if (etat != e) {
etat = e;
emit etatChanged(); emit etatChanged();
} }
} }
...@@ -2,17 +2,18 @@ ...@@ -2,17 +2,18 @@
#define VRAIECASE_H #define VRAIECASE_H
#include <QObject> #include <QObject>
#include <QString>
class VraieCase : public QObject { class VraieCase : public QObject {
Q_OBJECT Q_OBJECT
Q_PROPERTY(char letter READ getLetter WRITE setLetter NOTIFY letterChanged) Q_PROPERTY(QString letter READ getLetter WRITE setLetter NOTIFY letterChanged)
Q_PROPERTY(int etat READ getEtat WRITE setEtat NOTIFY etatChanged) Q_PROPERTY(int etat READ getEtat WRITE setEtat NOTIFY etatChanged)
public: public:
explicit VraieCase(QObject *parent = nullptr); explicit VraieCase(QObject *parent = nullptr);
char getLetter() const; QString getLetter() const;
void setLetter(char letter); void setLetter(const QString &letter); // Mise à jour du type
int getEtat() const; int getEtat() const;
void setEtat(int etat); void setEtat(int etat);
...@@ -22,7 +23,7 @@ signals: ...@@ -22,7 +23,7 @@ signals:
void etatChanged(); void etatChanged();
private: private:
char lettre; QString lettre;
int etat; int etat;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment