Skip to content
Snippets Groups Projects
Commit e6f8b0eb authored by Yanis Dziki's avatar Yanis Dziki
Browse files

Qstring _

parent aa5d1ff9
No related branches found
No related tags found
No related merge requests found
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#include <iostream> #include <iostream>
#include <filesystem> #include <filesystem>
#include "grillemanager.h" #include "grillemanager.h"
#include <QString>
using namespace std; using namespace std;
namespace fs = std::filesystem; namespace fs = std::filesystem;
...@@ -74,23 +76,27 @@ void Brain::setNombreEssais(int nbEssais) {mNbEssaisMax = nbEssais;} ...@@ -74,23 +76,27 @@ 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();
for (int i = 0; i < mNbEssaisMax; i++) { for (int i = 0; i < mNbEssaisMax; i++) {
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
Ligne* laligne = lignes[nbEssais]; Ligne* laligne = lignes[nbEssais];
......
#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(QChar('A' + (i % 26)));
vraieCase->setEtat(i % 3); // 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) {
std::cout << lettre.toStdString() << " est appuyée"<< std::endl; std::cout << lettre.toStdString() << " est appuyée"<< std::endl;
brain.entreLettre(lettre.toStdString()[0]); brain.entreLettre(lettre.toStdString()[0]);
...@@ -32,8 +31,8 @@ void Jeu::initGame() { ...@@ -32,8 +31,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();
......
...@@ -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();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment