72 lines
1.6 KiB
C++
72 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include "../Jeu.hpp"
|
|
#include "PieceSafari.hpp"
|
|
#include "PlateauSafari.hpp"
|
|
|
|
class Safari : private Jeu {
|
|
friend std::ostream &operator<<(std::ostream &, const Safari &);
|
|
|
|
// Plateau de jeu
|
|
PlateauSafari plateau;
|
|
|
|
// Joueurs
|
|
Joueur &joueur2;
|
|
Joueur *joueur3;
|
|
|
|
// Savoir si le joueur courant à déjà déplacer son animal
|
|
// et placer sa barrière
|
|
bool deplacerAnimal, placerBarriere;
|
|
|
|
// Vérifie si les joueurs peuvent encore jouer
|
|
int joueursEnVie;
|
|
|
|
// Etape du jeu, pour savoir où on en est
|
|
enum Etape {
|
|
ChoixJ1 = 0,
|
|
ChoixJ2,
|
|
ChoixJ3,
|
|
Placement,
|
|
EnJeu,
|
|
Fini,
|
|
};
|
|
|
|
// Où l'on se trouve dans le jeu, à quelle étape nous sommes
|
|
enum Etape etape;
|
|
|
|
// Barrières posés
|
|
int barrieres;
|
|
|
|
// Permet de transformer une Piece en PieceSafari
|
|
PieceSafari *getPiece(const int x, const int y) const;
|
|
const PieceSafari *getPiece(Piece *) const;
|
|
|
|
// Position curseur
|
|
const Position getPosition() const override;
|
|
|
|
// Change de joueur courant
|
|
void changerJoueurCourant();
|
|
|
|
// Message du choix des animaux
|
|
const std::string msgChoixAnimal() const;
|
|
|
|
// Message pour le placement des animaux
|
|
const std::string msgPlacement() const;
|
|
|
|
// Message à chaque tour de joueur
|
|
const std::string msgTonTour() const;
|
|
|
|
// Auxilliaire pour le choix des pièces par le joueur
|
|
void choixJoueur(const Etape prochaineEtape);
|
|
|
|
public:
|
|
Safari(Joueur &joueur1, Joueur &joueur2,
|
|
Joueur *joueur3 = nullptr); // constructor
|
|
virtual ~Safari(); // destructor
|
|
|
|
// Fonction de jeu
|
|
void play() override;
|
|
|
|
// Fonction d'évènement
|
|
void event(const int x, const int y) override;
|
|
};
|