ya encore des bugs la dedens... tentaive de debogguage

This commit is contained in:
Mylloon 2024-01-08 01:30:23 +01:00
parent ae6fca99a4
commit 709606ac32
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
2 changed files with 24 additions and 22 deletions

View file

@ -12,7 +12,7 @@ struct PlateauSafari : public Plateau {
// Pareil que deplacementValide mais est utilisable avec des coordonnées // Pareil que deplacementValide mais est utilisable avec des coordonnées
bool deplacementValideCoor(const int x1, const int y1, const int x2, bool deplacementValideCoor(const int x1, const int y1, const int x2,
const int y2) const; const int y2, const bool debug = false) 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;

View file

@ -149,32 +149,33 @@ void PlateauSafari::afficherPlateau(std::ostream &out, const bool d) const {
} }
bool PlateauSafari::deplacementValideCoor(const int x1, const int y1, bool PlateauSafari::deplacementValideCoor(const int x1, const int y1,
const int x2, const int y2) const { const int x2, const int y2,
const bool d) const {
// 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();
Position pos2 = barriere->getPos2(); Position pos2 = barriere->getPos2();
// Plus lointaine position en fonction de l'orientation if (d) {
std::pair<float, float> posBarriere; std::cout << std::boolalpha << "barriere" << pos1.first << ","
<< pos1.second << "|" << pos2.first << "," << pos2.second
// Horizontale << " et pieces" << x1 << "," << y1 << "|" << x2 << "," << y2
if (pos1.first == pos2.first) { << "=> "
posBarriere = << (std::max(pos1.first, pos2.first) >= std::max(x1, x2)) << " "
std::make_pair(pos1.first, std::min(pos1.second, pos2.second) + 0.5); << (std::min(pos1.first, pos2.first) <= std::min(x1, x2)) << " "
<< (std::max(pos1.second, pos2.second) >= std::max(y1, y2))
<< " "
<< (std::min(pos1.second, pos2.second) <= std::min(y1, y2))
<< " " << std::endl;
} }
// Verticale if ( // Gauche vers droite
else { std::max(pos1.first, pos2.first) >= std::max(x1, x2)
posBarriere = // Droite vers gauche
std::make_pair(std::min(pos1.first, pos2.first) + 0.5, pos1.second); && std::min(pos1.first, pos2.first) <= std::min(x1, x2)
} // Haut vers bas / Descendre
&& std::max(pos1.second, pos2.second) >= std::max(y1, y2)
// Vérifier les conditions pour le point posBarriere sur // Bas vers haut / Monter
// le segment posInitiale - (x, y) && std::min(pos1.second, pos2.second) <= std::min(y1, y2)) {
if (posBarriere.first >= std::min(x1, x2) &&
posBarriere.first <= std::max(x1, x2) &&
posBarriere.second >= std::min(y1, y2) &&
posBarriere.second <= std::max(y1, y2)) {
return false; return false;
} }
} }
@ -189,7 +190,8 @@ bool PlateauSafari::deplacementValide(const int x, const int y) const {
Position posInitiale = selection->getPos(); Position posInitiale = selection->getPos();
return deplacementValideCoor(posInitiale.first, posInitiale.second, x, y); return deplacementValideCoor(posInitiale.first, posInitiale.second, x, y,
true);
} }
Position PlateauSafari::getPlaceholderBarriere() const { Position PlateauSafari::getPlaceholderBarriere() const {