diff --git a/grille.cpp b/grille.cpp deleted file mode 100644 index b564f883865a62a719f9af0847a1a6a7d9a6d7ec..0000000000000000000000000000000000000000 --- a/grille.cpp +++ /dev/null @@ -1,191 +0,0 @@ -#include "grille.h" - -Grille::Grille(int vd) -{ - Alloc(); - Init(vd); -} - - -Grille::Grille(const Grille &D) -{ - Alloc(); - - for(int i=0; i<9; i++) - for(int j=0; j<9; j++) - T[i][j] = D.T[i][j]; -} - - -Grille::~Grille(){ - if (T != NULL) { - Free(); - T = NULL; - } -} - - -void Grille::Free(){ - for (int i=0; i<9; i++) { - delete [] T[i]; - } - delete [] T; -} - - -void Grille::Alloc(){ - T = new int*[9]; - for(int i=0; i<9; i++) - T[i] = new int[9]; -} - - -void Grille::Print(){ - for(int i=0; i<9; i++) { - cout << endl; - for(int j=0; j<9; j++) - cout << T[i][j] << ", "; - } - cout <<endl<<endl; -} - - -void Grille::Init(int value){ - for(int i=0; i<9; i++) - for(int j=0; j<9; j++) - T[i][j]=value; -} - - -void Grille::Set(int x, int y, int value) { - /* Modifie la valeur de la grille aux coordonnées (x,y) par value*/ - - if (x<9 && 0<=x && 0<=y && y<9){ - if (value<=9 && value>0) - T[x][y]=value; - else - cout << "La valeur n'est pas comprise entre 1 et 9." << endl << endl; - } - else - cout << "Les coordonnées ne sont pas adaptées." << endl << endl; -} - - -int Grille::Get(int x, int y){ - return T[x][y]; -} - - -void Grille::EssaiJoueur(){ - /* Appelée quand le joueur à sélectionné à la fois une case et un chiffre - * on vérifie alors avec les règles du sudoku (ligne/colonne/case) que le coup est permit*/ - - bool essai=true; - -// on vérifie pour la colonne et la ligne - for (int i=0;i<9;i++){ - if (chiffre_actif==T[x_actif][i] ){ - essai = false; - cout << "Le chiffre " << chiffre_actif << " est déjà présent dans la ligne." << endl << endl; - } - else if (chiffre_actif==T[i][y_actif]){ - essai = false; - cout << "Le chiffre " << chiffre_actif << " est déjà présent dans la colonne." << endl << endl; - } - } - -//on vérifie pour la case de 3x3 - int case_3_x=floor(x_actif/3); - int case_3_y=floor(y_actif/3); - for(int i=3*case_3_x;i<3*case_3_x+3;i++) - for (int j=3*case_3_y;j<3*case_3_y+3;j++){ - if (T[i][j]==chiffre_actif){ - essai = false; - cout << "Le chiffre " << chiffre_actif << " est déjà présent dans le carré 3x3." << endl << endl; - } - } - -// On indique si l'on peut remplir la case ou non et si oui, on le fait - if (essai){ - cout << "L'essai est réussi." << endl << endl; - Set(x_actif,y_actif,chiffre_actif); - x_actif=0; - y_actif=0; - chiffre_actif=0; - - } - - else - cout << "L'essai a échoué." << endl << endl; -} - - -void Grille::SelectChiffre(int c){ - /* On sélectionne le chiffre que l'on veut mettre par la suite.*/ - - if (1<=c && c<=9 && c!=chiffre_actif){ - cout << "Le chiffre selectionné est " << c << "." << endl<<endl; - chiffre_actif = c; - } - else if(c==chiffre_actif){ - chiffre_actif=0; //on déselectionne en tapant une deuxième fois sur le chiffre - } - else{ - cout << "Le chiffre selectionné n'est pas compris entre 1 et 9." << endl; - } -} - - -void Grille::SelectCase(int x, int y){ - /* On sélectionne la case que l'on veut mettre par la suite.*/ - - if (0<=x && x<9 && 0<=y && y<9 ){ - // si on sélectionne la case déja active, on la déselectionne. - if (x_actif==x && y_actif==y){ - x_actif=0; - y_actif=0; - cout << "La case a été désélectionnée."<<endl; - } - // si ce n'est pas le cas, on la sélectionne. - else{ - x_actif=x; - y_actif=y; - cout << "La case sélectionnée est (" << x_actif << "," << y_actif <<")" << endl<<endl; - } - } -} - -bool Grille::TestWin(){ -/* on teste juste que toute la grille soit remplie.*/ - for (int i=0;i<9;i++) - for (int j=0;j<9;j++) - if (Get(i,j)==0) - return false; - return true; -} - - - -Grille& Grille::operator= (const Grille &D){ - if ( this != &D) { // protection autoréférence - Free(); - Alloc(); - for(int i=0; i<9; i++) - for(int j=0; j<9; j++) - T[i][j] = D.T[i][j]; - } - return *this; -} - - -ostream& operator<< (ostream& sortie, Grille& V) -{ - sortie << endl; - for(int i=0; i<9; i++) { - sortie << endl; - for(int j=0; j<9; j++) - sortie << V.T[i][j] << ", "; - } - return sortie; -} -