// methode qui teste si le demon entoure l'ange de case detruite bool Demon::gagne(Plateau &plateau) { for (int i = 0; i < plateau.dim(); i++) { for (int j = 0; j < plateau.dim(); j++) { if ((!plateau.gameboard()[i][j].broken() && !plateau.gameboard()[i][j].free()) && // Position ange (plateau.gameboard()[i + 1][j].broken() && !plateau.gameboard()[i + 1][j].free()) && // bas (plateau.gameboard()[i - 1][j].broken() && !plateau.gameboard()[i - 1][j].free()) && // haut (plateau.gameboard()[i][j - 1].broken() && !plateau.gameboard()[i][j - 1].free()) && // gauche (plateau.gameboard()[i][j + 1].broken() && !plateau.gameboard()[i][j + 1].free()) && // droite (plateau.gameboard()[i - 1][j + 1].broken() && !plateau.gameboard()[i - 1][j + 1].free()) && // droite haut (plateau.gameboard()[i - 1][j - 1].broken() && !plateau.gameboard()[i - 1][j - 1].free()) && // gauche haut (plateau.gameboard()[i + 1][j + 1].broken() && !plateau.gameboard()[i + 1][j + 1].free()) && // droite bas (plateau.gameboard()[i + 1][j - 1].broken() && !plateau.gameboard()[i + 1][j - 1].free())) { // gauche bas plateau.affiche(); cout << "Bravo !! " << _pseudo << " vous avez gagné \n" << endl; return true; } } } return false; }
bool AngePuissant::incorrect(int &ligne, int &colonne, Plateau &plateau) { if (ligne < 0 || ligne > plateau.dim() - 1 || colonne < 0 || colonne > plateau.dim() - 1) { cout << "Cette case n'existe pas " << endl; return false; }else if(!plateau.gameboard()[ligne][colonne].broken() && !plateau.gameboard()[ligne][colonne].free()) { cout << "Vous êtes deja dessus !!\n" << endl; return false; } else if (plateau.gameboard()[ligne][colonne].broken() && !plateau.gameboard()[ligne][colonne].free()) { cout << "Case deja detruite !!\n" << endl; return false; }else{ if (_colonne - _puissance <= colonne && colonne <= _colonne + _puissance && _ligne - _puissance <= ligne && ligne <= _ligne + _puissance) { return true; }else{ cout << "Vous pouvez bouger que de " << _puissance << " cases" << endl; return false; } } }
void AngePuissant::modifierCase(int &ligne, int &colonne, Plateau &p) { p.gameboard()[_ligne][_colonne].setCase(false, true); p.gameboard()[ligne][colonne].setCase(false, false); _ligne = ligne, _colonne = colonne; //Je sauvegarde mes coordonées afin de faire les test plsu tard dans incorrect. }
void Ange::modifierCase(int &ligne, int &colonne, Plateau &plateau) { plateau.gameboard()[_ligne][_colonne].setCase(false, true); plateau.gameboard()[ligne][colonne].setCase(false, false); _ligne = ligne, _colonne = colonne; }
bool Demon::incorrect(int &ligne, int &colonne, Plateau &plateau) { if (ligne < 0 || colonne < 0 || ligne > plateau.dim() - 1 || colonne > plateau.dim() - 1) { cout << "Entrez une case valide !!\n" << endl; return false; }else if (!plateau.gameboard()[ligne][colonne].free() && plateau.gameboard()[ligne][colonne].broken()) { cout << "La case est déja detruite !!\n" << endl; return false; }else if (!plateau.gameboard()[ligne][colonne].broken() && !plateau.gameboard()[ligne][colonne].free()) { cout << "Case occupée par l'ange !!\n" << endl; return false; }else{ return true; } }
Plateau::Plateau(const Plateau &obj) { _dim = obj._dim; _gameboard = obj.gameboard(); }
void Demon::modifierCase(int &ligne, int &colonne, Plateau &plateau) { plateau.gameboard()[ligne][colonne].setCase(true, false); }