2023-12-10 15:03:07 +01:00
|
|
|
#pragma once
|
|
|
|
|
2023-12-14 15:41:36 +01:00
|
|
|
#include "../Plateau.hpp"
|
2024-01-07 01:05:08 +01:00
|
|
|
#include "PieceSafari.hpp"
|
2023-12-10 15:03:07 +01:00
|
|
|
|
2024-01-07 22:19:10 +01:00
|
|
|
struct PlateauSafari : public Plateau {
|
2023-12-14 15:58:43 +01:00
|
|
|
PlateauSafari();
|
2023-12-10 15:03:07 +01:00
|
|
|
virtual ~PlateauSafari();
|
2023-12-14 15:58:43 +01:00
|
|
|
|
2024-01-06 19:20:42 +01:00
|
|
|
// Fonction pour afficher le plateau vers une sortie
|
|
|
|
void afficherPlateau(std::ostream &, const bool debug = false) const override;
|
2024-01-07 03:23:18 +01:00
|
|
|
|
2024-01-07 22:56:16 +01:00
|
|
|
// Pareil que deplacementValide mais est utilisable avec des coordonnées
|
|
|
|
bool deplacementValideCoor(const int x1, const int y1, const int x2,
|
2024-01-08 01:30:23 +01:00
|
|
|
const int y2, const bool debug = false) const;
|
2024-01-07 22:56:16 +01:00
|
|
|
|
2024-01-07 03:23:18 +01:00
|
|
|
// Vérifie que le déplacement est valide
|
|
|
|
bool deplacementValide(const int destX, const int destY) const;
|
2024-01-07 14:14:11 +01:00
|
|
|
|
|
|
|
// Renvoie la position du placeholder
|
2024-01-07 22:19:10 +01:00
|
|
|
Position getPlaceholderBarriere() const;
|
2024-01-07 14:14:11 +01:00
|
|
|
|
|
|
|
// Modifie la position du placeholder
|
|
|
|
void setPlaceholderBarriere(const int x, const int y);
|
|
|
|
|
|
|
|
// Avec les positions du placeholder et les positions données
|
|
|
|
// Vérifie que les 2 points sont à côtés
|
2024-01-07 22:19:10 +01:00
|
|
|
bool validWithPlaceholder(const int x, const int y) const;
|
2024-01-07 14:14:11 +01:00
|
|
|
|
|
|
|
// Place la barrière, renvoie si on a réussi
|
|
|
|
bool placementBarriere(const int x, const int y);
|
2024-01-07 22:19:10 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
// Barrières
|
|
|
|
std::vector<PieceSafari *> barrieres;
|
|
|
|
|
|
|
|
PositionMutable placeholderBarriere;
|
2023-12-13 12:01:59 +01:00
|
|
|
};
|