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

MARCHE ENFIN

parent 358b142a
No related branches found
No related tags found
No related merge requests found
...@@ -43,5 +43,10 @@ Item { ...@@ -43,5 +43,10 @@ Item {
y: 594 y: 594
} }
} }
Loader {
id: pageLoader2
anchors.centerIn: parent
}
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
#include <iostream> #include <iostream>
#include <filesystem> #include <filesystem>
#include "fullligneexception.h" #include "fullligneexception.h"
#include "emptyligneexception.h"
#include <QString> #include <QString>
using namespace std; using namespace std;
...@@ -12,7 +13,7 @@ namespace fs = std::filesystem; ...@@ -12,7 +13,7 @@ namespace fs = std::filesystem;
#include "nowordexception.h" #include "nowordexception.h"
#include "brain.h" #include "brain.h"
Brain::Brain(string dicodir) : dicodir(dicodir), nbEssais(0) { Brain::Brain(string dicodir) : dicodir(dicodir), nbEssais(0), inGame(0) {
vector<string> files = getTxtFiles(); vector<string> files = getTxtFiles();
// TODO // TODO
// Initialise le menu déroulant avec files // Initialise le menu déroulant avec files
...@@ -20,6 +21,14 @@ Brain::Brain(string dicodir) : dicodir(dicodir), nbEssais(0) { ...@@ -20,6 +21,14 @@ Brain::Brain(string dicodir) : dicodir(dicodir), nbEssais(0) {
string Brain::getGrid() { string Brain::getGrid() {
string res = ""; string res = "";
if (inGame > 0) {
for(int i=0;i<2;i++) {res += " ";}
res += (inGame == 1) ? " LOSER " : " WINNER ";
for(int i=0;i<2;i++) {res += " ";}
return res;
}
for (int i=0;i<mNbEssaisMax;i++) { for (int i=0;i<mNbEssaisMax;i++) {
res += lignes[i]->getMot(); res += lignes[i]->getMot();
} }
...@@ -44,13 +53,20 @@ vector<string> Brain::getTxtFiles() { ...@@ -44,13 +53,20 @@ vector<string> Brain::getTxtFiles() {
} }
void Brain::entreLettre(char lettre) { void Brain::entreLettre(char lettre) {
if (inGame > 0) return;
if (lettre == '0') { if (lettre == '0') {
validateWord(); validateWord();
return; return;
} }
if (lettre == '!') { if (lettre == '!') {
try {
supprLettre(); supprLettre();
lignes[nbEssais]->show(); lignes[nbEssais]->show();
}
catch (EmptyLigneException e) {
cout << e.what() << endl;
}
return; return;
} }
try { try {
...@@ -77,8 +93,8 @@ void Brain::trouveMot() { ...@@ -77,8 +93,8 @@ void Brain::trouveMot() {
string line; string line;
cout << "Mot de taille : " << mTailleMot << " dans " << dico << endl; cout << "Mot de taille : " << mTailleMot << " dans " << dico << endl;
while (std::getline(file, line)) { while (std::getline(file, line)) {
if (line.length() == mTailleMot) { if (line.length() == mTailleMot + 1) {
listeMots.push_back(line); listeMots.push_back(line.substr(0, 8));
} }
} }
...@@ -107,6 +123,7 @@ void Brain::initGame() { ...@@ -107,6 +123,7 @@ void Brain::initGame() {
lignes.push_back(new Ligne(getMot())); lignes.push_back(new Ligne(getMot()));
lignes[i]->initLigne(); lignes[i]->initLigne();
} }
cout << "Solution : " << getMot() << endl;
} catch (NoWordException e) { } catch (NoWordException e) {
cout << e.what() << endl; cout << e.what() << endl;
} }
...@@ -135,18 +152,13 @@ void Brain::validateWord() { ...@@ -135,18 +152,13 @@ void Brain::validateWord() {
void Brain::onGameFinish(bool isWin) { void Brain::onGameFinish(bool isWin) {
if (!isWin) { if (!isWin) {
cout << "Perdu !" << endl; cout << "Perdu !" << endl;
inGame = 1;
}
else {
cout << "Gagné !" << endl;
inGame = 2;
} }
// TODO :
// Si isWin
// Affiche un message de victoire sur la fenetre menu
// Ferme la fenetre de jeu
// Sinon
// Affiche un message de defaite sur la fenetre menu
// Ferme la fenetre de jeu
// Reset du brain
nbEssais = 0; nbEssais = 0;
lignes.clear(); lignes.clear();
} }
...@@ -32,6 +32,7 @@ private: ...@@ -32,6 +32,7 @@ private:
string dicodir; string dicodir;
string dico; string dico;
string mot; string mot;
int inGame;
int mNbEssaisMax; int mNbEssaisMax;
int nbEssais; int nbEssais;
int mTailleMot; int mTailleMot;
......
...@@ -35,18 +35,6 @@ void Jeu::onClavierClick(QString lettre) { ...@@ -35,18 +35,6 @@ void Jeu::onClavierClick(QString lettre) {
for (int index = 0; index < 40; index ++) { for (int index = 0; index < 40; index ++) {
m_letterModel->setLetter(index, QString::fromLatin1(&brain->getGrid()[index], 1)); m_letterModel->setLetter(index, QString::fromLatin1(&brain->getGrid()[index], 1));
} }
// string lagrille = brain->getGrid();
// for (int index = 0; index < 40; index ++) {
// string nomCell = "cell_"+to_string(index/8)+"_"+to_string(index%8);
// QObject *cell = rootObject->findChild<QObject*>(nomCell);
// if (cell) {
// cell->setProperty("color", "red");
// }
// }
} }
......
...@@ -16,15 +16,15 @@ void Ligne::initLigne() { ...@@ -16,15 +16,15 @@ void Ligne::initLigne() {
bool Ligne::isGameCleared() { bool Ligne::isGameCleared() {
int nbjustes = 0; int nbjustes = 0;
cout << bonmot.length() <<endl;
show(); show();
for (int i = 0; i < bonmot.length(); i++) { for (int i = 0; i < bonmot.length(); i++) {
char bonnelettre = toupper(bonmot[i]); // Convert to uppercase char bonnelettre = toupper(bonmot[i]);
char lettreacomparer = contenu[i]->getLetter(); // Get the QChar from contenu char lettreacomparer = contenu[i]->getLetter();
int etat1 = (bonnelettre == lettreacomparer) ? 1 : 0; int etat1 = (bonnelettre == lettreacomparer) ? 1 : 0;
int etat2 = Ligne::dansMot(lettreacomparer, bonmot); int etat2 = Ligne::dansMot(lettreacomparer, bonmot);
int etat = etat1+etat2; int etat = etat1+etat2;
contenu[i]->setEtat(etat); contenu[i]->setEtat(etat);
nbjustes += etat;
} }
......
...@@ -20,13 +20,14 @@ int main(int argc, char *argv[]) { ...@@ -20,13 +20,14 @@ int main(int argc, char *argv[]) {
engine.rootContext()->setContextProperty("letterModel", &letterModel); engine.rootContext()->setContextProperty("letterModel", &letterModel);
engine.loadFromModule("motus", "Main"); engine.loadFromModule("motus", "Main");
QObject *rootObject = engine.rootObjects().first(); // Gets the first root object QObject *rootObject = engine.rootObjects().first();
QQuickItem *rootItem = qobject_cast<QQuickItem *>(rootObject); QQuickItem *rootItem = qobject_cast<QQuickItem *>(rootObject);
QQuickItem *parentItem = rootItem; QQuickItem *parentItem = rootItem;
// Créer l'objet Jeu sans mot
Jeu jeu(rootObject); Jeu jeu(rootObject);
jeu.setLetterModel(&letterModel); jeu.setLetterModel(&letterModel);
engine.rootContext()->setContextProperty("jeu", &jeu); engine.rootContext()->setContextProperty("jeu", &jeu);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment