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
|
|
|
|
|
|
|
// 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
|
|
|
|
|
|
|
// Renvoie le nombre d'animaux jouable par le joueur courant
|
|
|
|
int zoneDeplacementOk() const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
// Barrières
|
|
|
|
std::vector<PieceSafari *> barrieres;
|
|
|
|
|
|
|
|
PositionMutable placeholderBarriere;
|
2023-12-13 12:01:59 +01:00
|
|
|
};
|