diff --git a/src/Safari/Safari.cpp b/src/Safari/Safari.cpp index 973e65c..e1692d9 100644 --- a/src/Safari/Safari.cpp +++ b/src/Safari/Safari.cpp @@ -281,32 +281,36 @@ void Safari::changerJoueurCourant() { } } -// TODO int Safari::zoneDeplacementOk() const { // Compte le nombre d'animaux qui ont encore des zones valides // Zone valide = animal possède une zone de déplacement de mini 8 cases int nbAnimaux = 0; - for (Piece *animal : joueurCourant->getPieces()) { Position position = animal->getPos(); - // Vérifier la zone de déplacement valide + // Nombre de cases sur lesquels l'animal peut se rendre int casesDisponibles = 0; - const int taille = plateau.getTaille(); bool skip = false; + const int taille = plateau.getTaille(); for (int i = 0; i < taille && !skip; ++i) { for (int j = 0; j < taille && !skip; ++j) { - if (plateau.getPiece(i, j) == nullptr) { - if (plateau.deplacementValideCoor(position.first, position.second, i, - j)) { - ++casesDisponibles; - } - if (casesDisponibles >= 8) { - ++nbAnimaux; - skip = true; - } + // Déplacement sur les pièces vide uniquement + if (plateau.getPiece(i, j) != nullptr) { + continue; + } + + // Case dispo si on peut se déplacer dessus + if (plateau.deplacementValideCoor(position.first, position.second, i, + j)) { + ++casesDisponibles; + } + + // Si 8 cases sont dispo on peut arrêter la recherche + if (casesDisponibles >= 8) { + ++nbAnimaux; + skip = true; } } }