Skip to content
Snippets Groups Projects
Commit 1195f459 authored by Jolibois Simon's avatar Jolibois Simon
Browse files

nettoyage du code et ajout de commentaires

parent 3ad354e8
No related branches found
No related tags found
No related merge requests found
......@@ -7,11 +7,11 @@
using namespace std;
Grille::Grille(QObject *parent) : QObject(parent){
ifstream myFile("./grilles/grilleFacile.csv"); //choisir la grille ici
string ligne[9];
// lecture d'un fichier
ifstream myFile("./grilles/grilleFacile.csv"); //choix de la grille pour l'instant, il faudrait le passer en argument
string ligne[9];
int i = 0;
while(myFile.good() & (i<9)){
getline(myFile,ligne[0],'|');
getline(myFile,ligne[1],'|');
......@@ -22,15 +22,17 @@ Grille::Grille(QObject *parent) : QObject(parent){
getline(myFile,ligne[6],'|');
getline(myFile,ligne[7],'|');
getline(myFile,ligne[8],'\n');
for(int k=0;k<9;k++){
if (ligne[k]!="."){
for(int k=0;k<9;k++)
if (ligne[k]!=".")
grille[i][k]=ligne[k];
}
}
i++;
}
// affichage de la grille de départ dans la fenêtre de debug
Print();
matriceToVectors();
// définition de valeurs à partir de grille
grilleToValeurs();
// coloriage des cases en blanc
QList<QString> colors_case;
......@@ -40,12 +42,15 @@ Grille::Grille(QObject *parent) : QObject(parent){
for(int j =0;j<9;j++){
colors.push_back(colors_case);
}
isSaved = 0;
}
void Grille::save_grid(){
//save the current play
/* save the current play */
// initialisation des variables
isSaved = 0;
// écriture d'un nouveau fichier - on ne peut pour l'instant pas choisir le nom du fichier ni le dossier de sauvegarde
ofstream myFile("./grilles/grid_current.csv");
for (int i=0;i<9;i++){
for (int j=0;j<8;j++){
......@@ -63,18 +68,20 @@ void Grille::save_grid(){
myFile << "\n";
}
myFile.close();
cout << "enregistrement en cours" << endl;
isSaved = 1;
// signal à la partie QML
gameIsSaved();
cout << "saved" << isSaved << endl;
}
void Grille::verif_matrice(){
// verifie si la grille remplie par le joueur vérifie les règles du sudoku ou non
/* verifie si la grille remplie par le joueur vérifie les conditions de victoire du sudoku ou non */
// initialisation des variables
bool victoire = true;
list<string> lok= {"1", "2", "3", "4", "5", "6","7","8", "9"};
list<string> liste_test= {"1", "2", "3", "4", "5", "6","7","8", "9"};
// vérification par ligne
for(int i=0; i<9; i++){
......@@ -83,7 +90,7 @@ void Grille::verif_matrice(){
L.push_back(grille[i][j]);
}
L.sort();
victoire = victoire && (L==lok);
victoire = victoire && (L==liste_test);
}
// vérification par colonne
......@@ -93,8 +100,9 @@ void Grille::verif_matrice(){
L.push_back(grille[j][i]);
}
L.sort();
victoire = victoire && (L==lok);
victoire = victoire && (L==liste_test);
}
// vérification par case 3x3
for(int l=0; l<3;l++){
for(int c = 0; c<3; c++){
......@@ -105,25 +113,28 @@ void Grille::verif_matrice(){
}
}
L.sort();
victoire = victoire && (L==lok);
victoire = victoire && (L==liste_test);
}
}
verif = victoire;
// signal à la partie QML
emit verifClicked();
}
void Grille::set_chiffre_actif(int i){
void Grille::changer_valeur_bouton(int i){
/* fait la même chose que changer_valeur mais à l'aide des boutons de la fenêtre graphique */
changer_valeur(i, caseselected[0], caseselected[1]);
// signal à la partie QML
emit chiffreActifChanged();
}
void Grille::matriceToVectors(){
//passage d'un array nommé grille de taille 9x9 de string à valeurs qui est une QList<QList<QString>>
QList<QString> case1,case2,case3,case4,case5,case6,case7,case8,case9;
// on peut encore simplifier tout ca
void Grille::grilleToValeurs(){
/*conversion d'un array nommé grille de taille 9x9 de string à valeurs qui est une QList<QList<QString>> */
QList<QString> case1,case2,case3,case4,case5,case6,case7,case8,case9;
for(int i=0;i<3;i++){
for (int j=0;j<3;j++){
case1.append(QString::fromStdString(grille[i][j]));
......@@ -141,7 +152,7 @@ void Grille::matriceToVectors(){
}
void Grille::colorer_X(int i, int l){
// coloriage dans les carrés i à i+3 de la ligne l
/* coloriage dans les carrés i à i+3 de la ligne l */
for(int k =i;k<i+3;k++)
for(int m=l*3;m<l*3+3;m++)
colors[k][m]="#eaeaea";
......@@ -292,7 +303,7 @@ void Grille::changer_valeur(int valeur, int Carre,int Case){
cout << "impossible de modifier la valeur" << endl;
matriceToVectors();
grilleToValeurs();
// affichage de la grille
Print();
......
......@@ -9,45 +9,41 @@ class Grille : public QObject
{
Q_OBJECT
Q_PROPERTY(bool saved MEMBER isSaved NOTIFY gameIsSaved)
Q_PROPERTY(int coloration MEMBER chiffre_IsActif NOTIFY chiffreActifChanged)
Q_PROPERTY(QList<QList<QString>> values MEMBER valeurs NOTIFY valChanged)
Q_PROPERTY(QList<QList<QString>> colors MEMBER colors NOTIFY focusChanged)
Q_PROPERTY(int verifier MEMBER verif NOTIFY verifClicked)
Q_PROPERTY(int coloration MEMBER chiffre_IsActif NOTIFY chiffreActifChanged)
Q_PROPERTY(bool saved MEMBER isSaved NOTIFY gameIsSaved)
public:
explicit Grille(QObject *parent = nullptr);
void Print();
Q_INVOKABLE void save_grid();
Q_INVOKABLE void changer_valeur(int valeur, int Carre,int Case);
Q_INVOKABLE void changer_valeur_bouton(int i);
Q_INVOKABLE void colorer_voisins( int Carre,int Case, bool focus);
Q_INVOKABLE void verif_matrice( );
Q_INVOKABLE void set_chiffre_actif(int i);
Q_INVOKABLE void save_grid();
void Print();
private:
void matriceToVectors();
void grilleToValeurs();
void colorer_X(int i, int l );
void colorer_Y(int i, int c );
QList<QList<QString>> colors; // contient les couleurs de chaque case
QList<QList<QString>> valeurs; // contient les valeurs de chaque case sous forme de Qstring
string grille[9][9];
string grille[9][9]; // idem que valeurs mais sous forme de string
int caseselected[2] = {0,0}; // contient les valeurs de chaque case sous forme de string
int verif;
int chiffre_actif;
int verif; // on sait si l'on a gagné ou pas
int chiffre_actif; // le chiffre qui est sélectionné avec les boutons
int chiffre_IsActif;
int isSaved;
int isSaved; // le jeu a-t-il été sauvegardé ou non - pas utilisé pour l'instant
signals:
void valChanged();
void focusChanged();
void valChanged(); // la valeur d'une case a été modifiée
void focusChanged(); // la sélection a changée
void verifClicked();
void chiffreActifChanged();
void gameIsSaved();
void chiffreActifChanged(); // le chiffre actif a été modifié
void gameIsSaved(); // la partie actuelle a été enregistrée
};
#endif // GRILLE_H
......@@ -38,7 +38,7 @@ Window {
}
function set_chiffre_actif(i){
vueObjetCpt.set_chiffre_actif(i);
vueObjetCpt.changer_valeur_bouton(i);
var chiffre_IsActif = vueObjetCpt.coloration
var values = vueObjetCpt.values;
var l
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment