vérification endgame
This commit is contained in:
parent
6df4478498
commit
00bf91b25c
3 changed files with 43 additions and 14 deletions
|
@ -10,6 +10,10 @@ struct PlateauSafari : public Plateau {
|
||||||
// Fonction pour afficher le plateau vers une sortie
|
// Fonction pour afficher le plateau vers une sortie
|
||||||
void afficherPlateau(std::ostream &, const bool debug = false) const override;
|
void afficherPlateau(std::ostream &, const bool debug = false) const override;
|
||||||
|
|
||||||
|
// Pareil que deplacementValide mais est utilisable avec des coordonnées
|
||||||
|
bool deplacementValideCoor(const int x1, const int y1, const int x2,
|
||||||
|
const int y2) const;
|
||||||
|
|
||||||
// Vérifie que le déplacement est valide
|
// Vérifie que le déplacement est valide
|
||||||
bool deplacementValide(const int destX, const int destY) const;
|
bool deplacementValide(const int destX, const int destY) const;
|
||||||
|
|
||||||
|
|
|
@ -148,13 +148,8 @@ void PlateauSafari::afficherPlateau(std::ostream &out, const bool d) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool PlateauSafari::deplacementValide(const int x, const int y) const {
|
bool PlateauSafari::deplacementValideCoor(const int x1, const int y1,
|
||||||
if (!selection) {
|
const int x2, const int y2) const {
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
Position posInitiale = selection->getPos();
|
|
||||||
|
|
||||||
// Vérifier qu'il n'y a pas de barrière sur le chemin
|
// Vérifier qu'il n'y a pas de barrière sur le chemin
|
||||||
for (PieceSafari *barriere : barrieres) {
|
for (PieceSafari *barriere : barrieres) {
|
||||||
Position pos1 = barriere->getPos();
|
Position pos1 = barriere->getPos();
|
||||||
|
@ -176,15 +171,25 @@ bool PlateauSafari::deplacementValide(const int x, const int y) const {
|
||||||
|
|
||||||
// Vérifier les conditions pour le point posBarriere sur
|
// Vérifier les conditions pour le point posBarriere sur
|
||||||
// le segment posInitiale - (x, y)
|
// le segment posInitiale - (x, y)
|
||||||
if (posBarriere.first >= std::min(posInitiale.first, x) &&
|
if (posBarriere.first >= std::min(x1, x2) &&
|
||||||
posBarriere.first <= std::max(posInitiale.first, x) &&
|
posBarriere.first <= std::max(x1, x2) &&
|
||||||
posBarriere.second >= std::min(posInitiale.second, y) &&
|
posBarriere.second >= std::min(y1, y2) &&
|
||||||
posBarriere.second <= std::max(posInitiale.second, y)) {
|
posBarriere.second <= std::max(y1, y2)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (x == posInitiale.first || y == posInitiale.second);
|
return (x2 == x1 || y2 == y1);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool PlateauSafari::deplacementValide(const int x, const int y) const {
|
||||||
|
if (!selection) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
Position posInitiale = selection->getPos();
|
||||||
|
|
||||||
|
return deplacementValideCoor(posInitiale.first, posInitiale.second, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
Position PlateauSafari::getPlaceholderBarriere() const {
|
Position PlateauSafari::getPlaceholderBarriere() const {
|
||||||
|
|
|
@ -289,8 +289,28 @@ int Safari::zoneDeplacementOk() const {
|
||||||
int nbAnimaux = 0;
|
int nbAnimaux = 0;
|
||||||
|
|
||||||
for (Piece *animal : joueurCourant->getPieces()) {
|
for (Piece *animal : joueurCourant->getPieces()) {
|
||||||
// TODO
|
Position position = animal->getPos();
|
||||||
|
|
||||||
|
// Vérifier la zone de déplacement valide
|
||||||
|
int casesDisponibles = 0;
|
||||||
|
|
||||||
|
const int taille = plateau.getTaille();
|
||||||
|
bool skip = false;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 3 /* nbAnimaux */;
|
return nbAnimaux;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue