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

marche en console

parent 0305df62
Branches
No related tags found
No related merge requests found
......@@ -7,7 +7,7 @@ Item {
columns: 10
spacing: 5
property string letters: "AZERTYUIOPQSDFGHJKLMWXCVBN"
property string letters: "AZERTYUIOPQSDFGHJKLMWXCVBN0!"
Repeater {
model: keyboardGrid.letters.length
......
......@@ -4,6 +4,7 @@
#include <iostream>
#include <filesystem>
#include "grillemanager.h"
#include "fullligneexception.h"
using namespace std;
namespace fs = std::filesystem;
......@@ -35,8 +36,25 @@ vector<string> Brain::getTxtFiles() {
}
void Brain::entreLettre(char lettre) {
std::cout<<lettre<<std::endl;
if (lettre == '0') {
validateWord();
return;
}
if (lettre == '!') {
supprLettre();
lignes[nbEssais]->show();
return;
}
try {
lignes[nbEssais]->entreLettre(lettre);
lignes[nbEssais]->show();
}
catch (FullLigneException e) {
cout << e.what() <<endl;
}
}
void Brain::supprLettre() {
lignes[nbEssais]->supprLettre();
}
void Brain::trouveMot() {
......@@ -53,7 +71,6 @@ void Brain::trouveMot() {
while (std::getline(file, line)) {
if (line.length() - 1 == mTailleMot) {
listeMots.push_back(line);
}
}
......@@ -78,6 +95,11 @@ void Brain::initGame() {
// Appelé lorsqu'on appuie sur le bouton Start Game
try {
trouveMot();
cout << "Réponse : [";
cout << getMot();
cout << "]";
cout << endl;
for (int i=0;i<mNbEssaisMax;i++) {
lignes.push_back(new Ligne(getMot()));
lignes[i]->initLigne();
......@@ -93,6 +115,8 @@ void Brain::initGame() {
void Brain::validateWord() {
// Appelé lorsqu'on appuie sur le bouton validate du clavier
cout << "Validation de la ligne !" << endl;
Ligne* laligne = lignes[nbEssais];
if (laligne->isGameCleared()) {
onGameFinish(true);
......@@ -107,6 +131,9 @@ void Brain::validateWord() {
//
void Brain::onGameFinish(bool isWin) {
if (!isWin) {
cout << "Perdu !" << endl;
}
// TODO :
// Si isWin
......
......@@ -23,6 +23,7 @@ public:
void onGameFinish(bool isWin);
vector<string> getTxtFiles();
void entreLettre(char lettre);
void supprLettre();
private:
string dicodir;
......
......@@ -11,8 +11,8 @@ void GrilleManager::createGrid(int rows, int columns) {
int totalCases = rows * columns;
for (int i = 0; i < totalCases; ++i) {
auto *vraieCase = new VraieCase(this);
vraieCase->setLetter('A' + (i % 26)); // Exemple : lettres de A à Z
vraieCase->setEtat(i % 3); // Exemple : état cyclique (0,1,2)
vraieCase->setLetter('_'); // Exemple : lettres de A à Z
vraieCase->setEtat(0); // Exemple : état cyclique (0,1,2)
m_cases.append(vraieCase);
}
......
......@@ -20,7 +20,6 @@ QString Jeu::getMotAffiche() {
}
void Jeu::onClavierClick(QString lettre) {
std::cout << lettre.toStdString() << " est appuyée"<< std::endl;
brain.entreLettre(lettre.toStdString()[0]);
}
......
#include "ligne.h"
#include "fullligneexception.h"
#include "emptyligneexception.h"
#include "iostream"
#include <cctype>
using namespace std;
Ligne::Ligne(string bonmot) : bonmot(bonmot) {}
Ligne::Ligne(string bonmot) : bonmot(bonmot), positionCurseur(0) {}
void Ligne::initLigne() {
......@@ -14,13 +17,26 @@ void Ligne::initLigne() {
bool Ligne::isGameCleared() {
int nbjustes = 0;
for (int i=0;i<bonmot.length();i++) {
int etat = (contenu[i]->getLetter() == bonmot[i]) ? 0 : 1;
etat += Ligne::dansMot(contenu[i]->getLetter(), bonmot);
int etat = (tolower(contenu[i]->getLetter()) == bonmot[i]) ? 0 : 1;
etat += Ligne::dansMot(tolower(contenu[i]->getLetter()), bonmot);
contenu[i]->setEtat(etat);
cout << contenu[i]->getLetter() << bonmot[i] << etat << endl;
}
show();
return (nbjustes == 2*bonmot.length());
}
void Ligne::show() {
cout << "La ligne : |";
for (int i=0;i<bonmot.length();i++) {
if (contenu[i]->getEtat() == 1) {cout << "\033[33m";}
if (contenu[i]->getEtat() == 2) {cout << "";}
cout << contenu[i]->getLetter();
if (contenu[i]->getEtat() >= 1) cout << "\033[31m";
}
cout << "|" << endl;
}
bool Ligne::dansMot(char lettre, string mot) {
for (int i=0;i<mot.length();i++) {
if (mot[i] == lettre) {
......@@ -42,6 +58,7 @@ void Ligne::supprLettre() {
if (positionCurseur == 0) {
throw EmptyLigneException();
}
cout << "Suppression d'une lettre" << endl;
contenu[positionCurseur - 1]->setLetter(' ');
positionCurseur--;
}
......@@ -21,6 +21,7 @@ public:
bool isGameCleared();
void entreLettre(char lettre);
void supprLettre();
void show();
private:
string bonmot;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment