const keyword, everywhere all at once
This commit is contained in:
parent
5d345cd183
commit
006857b8bc
25 changed files with 96 additions and 92 deletions
|
@ -12,7 +12,7 @@ class Butin : private Jeu {
|
||||||
PlateauButin plateau;
|
PlateauButin plateau;
|
||||||
|
|
||||||
// Joueurs
|
// Joueurs
|
||||||
Joueur &joueur2;
|
const Joueur &joueur2;
|
||||||
|
|
||||||
// Etape du jeu, pour savoir où on en est
|
// Etape du jeu, pour savoir où on en est
|
||||||
enum Etape {
|
enum Etape {
|
||||||
|
@ -26,22 +26,22 @@ class Butin : private Jeu {
|
||||||
enum Etape etape;
|
enum Etape etape;
|
||||||
|
|
||||||
// Permet de transformer une Piece en PieceButin
|
// Permet de transformer une Piece en PieceButin
|
||||||
PieceButin *getPiece(const int x, const int y) const;
|
const PieceButin *getPiece(const int x, const int y) const;
|
||||||
|
|
||||||
// Message quand les joueurs retirent les pièces au début du jeu
|
// Message quand les joueurs retirent les pièces au début du jeu
|
||||||
std::string msgPieceJaune(const bool erreur = false) const;
|
const std::string msgPieceJaune(const bool erreur = false) const;
|
||||||
|
|
||||||
// Message à chaque tour du joueur
|
// Message à chaque tour du joueur
|
||||||
std::string msgTonTour() const;
|
const std::string msgTonTour() const;
|
||||||
|
|
||||||
// Position curseur
|
// Position curseur
|
||||||
std::pair<int, int> getPosition() const override;
|
const std::pair<const int, const int> getPosition() const override;
|
||||||
|
|
||||||
// Change de joueur courant
|
// Change de joueur courant
|
||||||
void changerJoueurCourant();
|
void changerJoueurCourant();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Butin(Joueur &joueur1, Joueur &joueur2); // constructor
|
Butin(const Joueur &joueur1, const Joueur &joueur2); // constructor
|
||||||
virtual ~Butin(); // destructor
|
virtual ~Butin(); // destructor
|
||||||
|
|
||||||
// Fonction d'initialisation du jeu
|
// Fonction d'initialisation du jeu
|
||||||
|
|
|
@ -14,7 +14,7 @@ struct PieceButin : public Piece {
|
||||||
virtual ~PieceButin();
|
virtual ~PieceButin();
|
||||||
|
|
||||||
// Couleur sur l'écran
|
// Couleur sur l'écran
|
||||||
sf::Color getScreenColor() const override;
|
const sf::Color getScreenColor() const override;
|
||||||
|
|
||||||
// Récupère le nombre de points que la pièce vaut
|
// Récupère le nombre de points que la pièce vaut
|
||||||
int getPoints() const;
|
int getPoints() const;
|
||||||
|
@ -22,5 +22,5 @@ struct PieceButin : public Piece {
|
||||||
private:
|
private:
|
||||||
int points;
|
int points;
|
||||||
|
|
||||||
std::string to_string(const enum Categorie) const;
|
const std::string to_string(const enum Categorie) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -12,7 +12,8 @@ struct PlateauButin : public Plateau {
|
||||||
void initialiserPlateau() override;
|
void initialiserPlateau() override;
|
||||||
|
|
||||||
// Renvoie la liste des pièces entre la pièce sélectionné et une position
|
// Renvoie la liste des pièces entre la pièce sélectionné et une position
|
||||||
std::vector<Piece *> cheminPieces(const int destX, const int destY) const;
|
const std::vector<const Piece *> cheminPieces(const int destX,
|
||||||
|
const int destY) const;
|
||||||
|
|
||||||
// Vrai si la pièce sélectionnée est jaune
|
// Vrai si la pièce sélectionnée est jaune
|
||||||
bool selectionJaune() const;
|
bool selectionJaune() const;
|
||||||
|
@ -22,6 +23,7 @@ struct PlateauButin : public Plateau {
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Renvoie la liste des pièces entre deux position
|
// Renvoie la liste des pièces entre deux position
|
||||||
std::vector<Piece *> cheminPieces(const int depX, const int depY,
|
const std::vector<const Piece *> cheminPieces(const int depX, const int depY,
|
||||||
const int destX, const int destY) const;
|
const int destX,
|
||||||
|
const int destY) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@ class Dames : private Jeu {
|
||||||
PlateauDames plateau;
|
PlateauDames plateau;
|
||||||
|
|
||||||
// Joueurs
|
// Joueurs
|
||||||
Joueur &joueur2;
|
const Joueur &joueur2;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Dames(Joueur &joueur1, Joueur &joueur2); // constructor
|
Dames(Joueur &joueur1, Joueur &joueur2); // constructor
|
||||||
|
@ -26,7 +26,7 @@ public:
|
||||||
void event(const int x, const int y) override;
|
void event(const int x, const int y) override;
|
||||||
|
|
||||||
// Position curseur
|
// Position curseur
|
||||||
std::pair<int, int> getPosition() const override;
|
const std::pair<const int, const int> getPosition() const override;
|
||||||
|
|
||||||
// Vérifie si une prise est possible pour une pièce donnée
|
// Vérifie si une prise est possible pour une pièce donnée
|
||||||
bool prisePossible(Joueur &joueur) const;
|
bool prisePossible(Joueur &joueur) const;
|
||||||
|
|
|
@ -12,7 +12,7 @@ struct PieceDames : public Piece {
|
||||||
virtual ~PieceDames();
|
virtual ~PieceDames();
|
||||||
|
|
||||||
// Couleur sur l'écran
|
// Couleur sur l'écran
|
||||||
sf::Color getScreenColor() const override;
|
const sf::Color getScreenColor() const override;
|
||||||
|
|
||||||
// Getter pour la piece (dame ou non)
|
// Getter pour la piece (dame ou non)
|
||||||
bool getDame() const;
|
bool getDame() const;
|
||||||
|
@ -24,5 +24,5 @@ private:
|
||||||
// True si la piece est une dame
|
// True si la piece est une dame
|
||||||
bool dame;
|
bool dame;
|
||||||
|
|
||||||
std::string to_string(const enum Categorie) const;
|
const std::string to_string(const enum Categorie) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
struct Jeu {
|
struct Jeu {
|
||||||
// Le joueur 1 est toujours celui qui commence
|
// Le joueur 1 est toujours celui qui commence
|
||||||
Jeu(Joueur &j1); // constructor
|
Jeu(const Joueur &j1); // constructor
|
||||||
virtual ~Jeu(); // destructor
|
virtual ~Jeu(); // destructor
|
||||||
|
|
||||||
// Fonction d'initialisation d'un jeu
|
// Fonction d'initialisation d'un jeu
|
||||||
|
@ -18,7 +18,7 @@ struct Jeu {
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Joueurs, au moins un joueur
|
// Joueurs, au moins un joueur
|
||||||
Joueur &joueur1;
|
const Joueur &joueur1;
|
||||||
Joueur joueurCourant;
|
Joueur joueurCourant;
|
||||||
|
|
||||||
// Position du dernier clic du curseur sur l'écran
|
// Position du dernier clic du curseur sur l'écran
|
||||||
|
@ -27,5 +27,5 @@ protected:
|
||||||
// Récupère la position du curseur
|
// Récupère la position du curseur
|
||||||
// Virtuelle car on aimerais vérifier que le curseur n'est pas en dehors du
|
// Virtuelle car on aimerais vérifier que le curseur n'est pas en dehors du
|
||||||
// plateau et on accès à aucun plateau ici
|
// plateau et on accès à aucun plateau ici
|
||||||
virtual std::pair<int, int> getPosition() const = 0;
|
virtual const std::pair<const int, const int> getPosition() const = 0;
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,7 +13,7 @@ class Joueur {
|
||||||
// Pour le butin, tout simplement les pièces que le joueur gagne.
|
// Pour le butin, tout simplement les pièces que le joueur gagne.
|
||||||
// Pour les dames, peut être uniquement les pieces sur le plateau.
|
// Pour les dames, peut être uniquement les pieces sur le plateau.
|
||||||
// Pour le safari, les animaux du joueur
|
// Pour le safari, les animaux du joueur
|
||||||
std::vector<Piece *> pieces;
|
std::vector<const Piece *> pieces;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Joueur(const int numeroJoueur); // constructor
|
Joueur(const int numeroJoueur); // constructor
|
||||||
|
@ -23,10 +23,10 @@ public:
|
||||||
const Joueur &operator=(const Joueur &); // copy assignement
|
const Joueur &operator=(const Joueur &); // copy assignement
|
||||||
|
|
||||||
// Ajoute une pièce à la liste de pièces du joueur
|
// Ajoute une pièce à la liste de pièces du joueur
|
||||||
void ajoutPiece(Piece *piece);
|
void ajoutPiece(const Piece *piece);
|
||||||
|
|
||||||
// Getter pour les pièces du joueur
|
// Getter pour les pièces du joueur
|
||||||
const std::vector<Piece *> getPieces() const;
|
const std::vector<const Piece *> getPieces() const;
|
||||||
|
|
||||||
// Getter pour le nom du joueur
|
// Getter pour le nom du joueur
|
||||||
int getNum() const;
|
int getNum() const;
|
||||||
|
|
|
@ -19,7 +19,7 @@ class Piece {
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Couleur de la pièce ou type d'animal pour Safari par ex
|
// Couleur de la pièce ou type d'animal pour Safari par ex
|
||||||
std::string categorie;
|
const std::string categorie;
|
||||||
|
|
||||||
// Indices où sont placés les pièces sur le plateau
|
// Indices où sont placés les pièces sur le plateau
|
||||||
int x;
|
int x;
|
||||||
|
@ -33,8 +33,8 @@ public:
|
||||||
void moveTo(const int destX, const int destY);
|
void moveTo(const int destX, const int destY);
|
||||||
|
|
||||||
// Renvoie la couleur de la pièce pour l'affichage
|
// Renvoie la couleur de la pièce pour l'affichage
|
||||||
virtual sf::Color getScreenColor() const = 0;
|
virtual const sf::Color getScreenColor() const = 0;
|
||||||
|
|
||||||
// Renvoie la position de la pièce
|
// Renvoie la position de la pièce
|
||||||
std::pair<int, int> getPos() const;
|
const std::pair<const int, const int> getPos() const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -10,7 +10,7 @@ protected:
|
||||||
Piece ***plateau;
|
Piece ***plateau;
|
||||||
|
|
||||||
// Taille du plateau
|
// Taille du plateau
|
||||||
int taille;
|
const int taille;
|
||||||
|
|
||||||
// Piece actuellement selectionnée
|
// Piece actuellement selectionnée
|
||||||
Piece *selection;
|
Piece *selection;
|
||||||
|
@ -32,13 +32,14 @@ public:
|
||||||
|
|
||||||
// Fonction pour bouger une pièce, renvoie les anciennes coordonnées de la
|
// Fonction pour bouger une pièce, renvoie les anciennes coordonnées de la
|
||||||
// pièce bougée (TODO: est-ce utile de renvoyer les anciennes coordonnées ?)
|
// pièce bougée (TODO: est-ce utile de renvoyer les anciennes coordonnées ?)
|
||||||
std::pair<int, int> moveSelection(const int x, const int y);
|
const std::pair<const int, const int> moveSelection(const int x, const int y);
|
||||||
|
|
||||||
// Renvoie une pièce à une position donnnée
|
// Renvoie une pièce à une position donnnée
|
||||||
Piece *getPiece(const int x, const int y) const;
|
Piece *getPiece(const int x, const int y) const;
|
||||||
|
|
||||||
// Prend des coordonnées-écran et renvoie des coordonnées-jeu
|
// Prend des coordonnées-écran et renvoie des coordonnées-jeu
|
||||||
std::pair<int, int> trouveCoordonnees(const int x, const int y) const;
|
const std::pair<const int, const int> trouveCoordonnees(const int x,
|
||||||
|
const int y) const;
|
||||||
|
|
||||||
// Renvoie la taille du plateau
|
// Renvoie la taille du plateau
|
||||||
int getTaille() const;
|
int getTaille() const;
|
||||||
|
|
|
@ -14,8 +14,8 @@ struct PieceSafari : public Piece {
|
||||||
virtual ~PieceSafari();
|
virtual ~PieceSafari();
|
||||||
|
|
||||||
// Couleur sur l'écran
|
// Couleur sur l'écran
|
||||||
sf::Color getScreenColor() const override;
|
const sf::Color getScreenColor() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string to_string(const enum Categorie) const;
|
const std::string to_string(const enum Categorie) const;
|
||||||
};
|
};
|
||||||
|
|
|
@ -11,15 +11,15 @@ class Safari : private Jeu {
|
||||||
PlateauSafari plateau;
|
PlateauSafari plateau;
|
||||||
|
|
||||||
// Joueurs
|
// Joueurs
|
||||||
Joueur &joueur2;
|
const Joueur &joueur2;
|
||||||
Joueur *joueur3;
|
const Joueur *joueur3;
|
||||||
|
|
||||||
// Barrières
|
// Barrières
|
||||||
std::vector<PieceSafari *> barrieres;
|
std::vector<PieceSafari *> barrieres;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Safari(Joueur &joueur1, Joueur &joueur2,
|
Safari(const Joueur &joueur1, const Joueur &joueur2,
|
||||||
Joueur *joueur3 = nullptr); // constructor
|
const Joueur *joueur3 = nullptr); // constructor
|
||||||
virtual ~Safari(); // destructor
|
virtual ~Safari(); // destructor
|
||||||
|
|
||||||
// Fonction d'initialisation du jeu
|
// Fonction d'initialisation du jeu
|
||||||
|
@ -32,7 +32,7 @@ public:
|
||||||
void event(const int x, const int y) override;
|
void event(const int x, const int y) override;
|
||||||
|
|
||||||
// Position curseur
|
// Position curseur
|
||||||
std::pair<int, int> getPosition() const override;
|
const std::pair<const int, const int> getPosition() const override;
|
||||||
|
|
||||||
// Fonction d'initialisation du jeu
|
// Fonction d'initialisation du jeu
|
||||||
void choixAnimal(const PieceSafari::Categorie animal);
|
void choixAnimal(const PieceSafari::Categorie animal);
|
||||||
|
|
|
@ -4,9 +4,9 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void print_vec(std::vector<T> vec) {
|
void print_vec(const std::vector<const T> vec) {
|
||||||
std::cout << "[ (" << vec.size() << ")\n";
|
std::cout << "[ (" << vec.size() << ")\n";
|
||||||
for (auto it : vec) {
|
for (const T it : vec) {
|
||||||
std::cout << " " << it << "\n";
|
std::cout << " " << it << "\n";
|
||||||
}
|
}
|
||||||
std::cout << "]\n";
|
std::cout << "]\n";
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#include "../../includes/Butin/PieceButin.hpp"
|
#include "../../includes/Butin/PieceButin.hpp"
|
||||||
#include "../../includes/Ecran.hpp"
|
#include "../../includes/Ecran.hpp"
|
||||||
|
|
||||||
Butin::Butin(Joueur &j1, Joueur &j2)
|
Butin::Butin(const Joueur &j1, const Joueur &j2)
|
||||||
: Jeu(j1), plateau(PlateauButin()), joueur2{j2} {
|
: Jeu(j1), plateau(PlateauButin()), joueur2{j2} {
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,11 @@ std::ostream &operator<<(std::ostream &out, const Butin &data) {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
PieceButin *Butin::getPiece(const int x, const int y) const {
|
const PieceButin *Butin::getPiece(const int x, const int y) const {
|
||||||
return dynamic_cast<PieceButin *>(plateau.getPiece(x, y));
|
return dynamic_cast<const PieceButin *>(plateau.getPiece(x, y));
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Butin::msgPieceJaune(const bool erreur) const {
|
const std::string Butin::msgPieceJaune(const bool erreur) const {
|
||||||
std::string res = "Joueur " + std::to_string(joueurCourant.getNum()) +
|
std::string res = "Joueur " + std::to_string(joueurCourant.getNum()) +
|
||||||
", retirez une piece jaune en cliquant dessus.";
|
", retirez une piece jaune en cliquant dessus.";
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ std::string Butin::msgPieceJaune(const bool erreur) const {
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Butin::msgTonTour() const {
|
const std::string Butin::msgTonTour() const {
|
||||||
return "Joueur " + std::to_string(joueurCourant.getNum()) +
|
return "Joueur " + std::to_string(joueurCourant.getNum()) +
|
||||||
", c'est votre tour.";
|
", c'est votre tour.";
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ void Butin::event(const int x, const int y) {
|
||||||
switch (etape) {
|
switch (etape) {
|
||||||
// Clic du J1
|
// Clic du J1
|
||||||
case (Etape::ChoixJ1): {
|
case (Etape::ChoixJ1): {
|
||||||
PieceButin *p = getPiece(posCurseur.first, posCurseur.second);
|
const PieceButin *p = getPiece(posCurseur.first, posCurseur.second);
|
||||||
// Vérifier que la pièce est jaune
|
// Vérifier que la pièce est jaune
|
||||||
if (p->getPoints() == PieceButin::Jaune) {
|
if (p->getPoints() == PieceButin::Jaune) {
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ void Butin::event(const int x, const int y) {
|
||||||
// Clic du J2
|
// Clic du J2
|
||||||
case ChoixJ2: {
|
case ChoixJ2: {
|
||||||
// Vérifier que la pièce existe et est jaune
|
// Vérifier que la pièce existe et est jaune
|
||||||
PieceButin *p = getPiece(posCurseur.first, posCurseur.second);
|
const PieceButin *p = getPiece(posCurseur.first, posCurseur.second);
|
||||||
if (p && p->getPoints() == PieceButin::Jaune) {
|
if (p && p->getPoints() == PieceButin::Jaune) {
|
||||||
// Retire la pièce
|
// Retire la pièce
|
||||||
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
|
plateau.modifierPlateau(posCurseur.first, posCurseur.second, nullptr);
|
||||||
|
@ -109,11 +109,11 @@ void Butin::event(const int x, const int y) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EnJeu: {
|
case EnJeu: {
|
||||||
Piece *p = getPiece(posCurseur.first, posCurseur.second);
|
const Piece *p = getPiece(posCurseur.first, posCurseur.second);
|
||||||
// Vérifie que la pièce sélectionnée = Jaune et que la case choisie = vide
|
// Vérifie que la pièce sélectionnée = Jaune et que la case choisie = vide
|
||||||
if (plateau.selectionJaune() && p == nullptr) {
|
if (plateau.selectionJaune() && p == nullptr) {
|
||||||
// Récupère la liste des pièces sur le chemin
|
// Récupère la liste des pièces sur le chemin
|
||||||
std::vector<Piece *> chemin =
|
const std::vector<const Piece *> chemin =
|
||||||
plateau.cheminPieces(posCurseur.first, posCurseur.second);
|
plateau.cheminPieces(posCurseur.first, posCurseur.second);
|
||||||
|
|
||||||
// Si le chemin est valide == Si des pièces sont sur le chemin
|
// Si le chemin est valide == Si des pièces sont sur le chemin
|
||||||
|
@ -122,9 +122,9 @@ void Butin::event(const int x, const int y) {
|
||||||
plateau.moveSelection(posCurseur.first, posCurseur.second);
|
plateau.moveSelection(posCurseur.first, posCurseur.second);
|
||||||
|
|
||||||
// Mange les pièces sur le chemin
|
// Mange les pièces sur le chemin
|
||||||
for (auto it : chemin) {
|
for (const Piece *it : chemin) {
|
||||||
// Récupère la pièce
|
// Récupère la pièce
|
||||||
std::pair<int, int> pos = it->getPos();
|
const std::pair<const int, const int> pos = it->getPos();
|
||||||
Piece *gain = plateau.getPiece(pos.first, pos.second);
|
Piece *gain = plateau.getPiece(pos.first, pos.second);
|
||||||
|
|
||||||
// Retire la pièce
|
// Retire la pièce
|
||||||
|
@ -161,7 +161,7 @@ void Butin::event(const int x, const int y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, int> Butin::getPosition() const {
|
const std::pair<const int, const int> Butin::getPosition() const {
|
||||||
if (posCurseur.second > plateau.getTaille() - 1) {
|
if (posCurseur.second > plateau.getTaille() - 1) {
|
||||||
std::cerr << "Position inconnu du plateau.\n";
|
std::cerr << "Position inconnu du plateau.\n";
|
||||||
return std::make_pair(-1, -1);
|
return std::make_pair(-1, -1);
|
||||||
|
|
|
@ -8,7 +8,7 @@ PieceButin::PieceButin(const enum Categorie cat, const int posX, const int posY)
|
||||||
|
|
||||||
PieceButin::~PieceButin() {}
|
PieceButin::~PieceButin() {}
|
||||||
|
|
||||||
std::string PieceButin::to_string(const enum Categorie cat) const {
|
const std::string PieceButin::to_string(const enum Categorie cat) const {
|
||||||
switch (cat) {
|
switch (cat) {
|
||||||
case Jaune:
|
case Jaune:
|
||||||
return "Jaune";
|
return "Jaune";
|
||||||
|
@ -22,7 +22,7 @@ std::string PieceButin::to_string(const enum Categorie cat) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sf::Color PieceButin::getScreenColor() const {
|
const sf::Color PieceButin::getScreenColor() const {
|
||||||
switch (points) {
|
switch (points) {
|
||||||
case Jaune:
|
case Jaune:
|
||||||
return sf::Color::Yellow;
|
return sf::Color::Yellow;
|
||||||
|
|
|
@ -46,14 +46,14 @@ void PlateauButin::initialiserPlateau() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Piece *> PlateauButin::cheminPieces(const int destX,
|
const std::vector<const Piece *>
|
||||||
const int destY) const {
|
PlateauButin::cheminPieces(const int destX, const int destY) const {
|
||||||
std::pair<int, int> posSelection = selection->getPos();
|
const std::pair<const int, const int> posSelection = selection->getPos();
|
||||||
return cheminPieces(posSelection.first, posSelection.second, destX, destY);
|
return cheminPieces(posSelection.first, posSelection.second, destX, destY);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<Piece *> PlateauButin::cheminPieces(const int depX, const int depY,
|
const std::vector<const Piece *>
|
||||||
const int destX,
|
PlateauButin::cheminPieces(const int depX, const int depY, const int destX,
|
||||||
const int destY) const {
|
const int destY) const {
|
||||||
// Distances
|
// Distances
|
||||||
const int deltaX = destX - depX;
|
const int deltaX = destX - depX;
|
||||||
|
@ -63,7 +63,7 @@ std::vector<Piece *> PlateauButin::cheminPieces(const int depX, const int depY,
|
||||||
const int stepX = (deltaX > 0) ? 1 : -1;
|
const int stepX = (deltaX > 0) ? 1 : -1;
|
||||||
const int stepY = (deltaY > 0) ? 1 : -1;
|
const int stepY = (deltaY > 0) ? 1 : -1;
|
||||||
|
|
||||||
std::vector<Piece *> chemin;
|
std::vector<const Piece *> chemin;
|
||||||
|
|
||||||
// Déplacement vertical
|
// Déplacement vertical
|
||||||
if (deltaX == 0) {
|
if (deltaX == 0) {
|
||||||
|
@ -105,10 +105,10 @@ bool PlateauButin::selectionJaune() const {
|
||||||
|
|
||||||
bool PlateauButin::coupsPossible() const {
|
bool PlateauButin::coupsPossible() const {
|
||||||
// Liste des cases vides
|
// Liste des cases vides
|
||||||
std::vector<std::pair<int, int>> casesVides;
|
std::vector<std::pair<const int, const int>> casesVides;
|
||||||
|
|
||||||
// Liste des pièces jaunes
|
// Liste des pièces jaunes
|
||||||
std::vector<std::pair<int, int>> piecesJaunes;
|
std::vector<std::pair<const int, const int>> piecesJaunes;
|
||||||
|
|
||||||
for (int i = 0; i < taille; ++i) {
|
for (int i = 0; i < taille; ++i) {
|
||||||
for (int j = 0; j < taille; ++j) {
|
for (int j = 0; j < taille; ++j) {
|
||||||
|
@ -125,9 +125,9 @@ bool PlateauButin::coupsPossible() const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (std::pair<int, int> p : piecesJaunes) {
|
for (std::pair<const int, const int> p : piecesJaunes) {
|
||||||
// Parmis toutes les pièces jaunes
|
// Parmis toutes les pièces jaunes
|
||||||
for (std::pair<int, int> it : casesVides) {
|
for (std::pair<const int, const int> it : casesVides) {
|
||||||
// Si le déplacement vers une case vide peut donner des points
|
// Si le déplacement vers une case vide peut donner des points
|
||||||
if (!cheminPieces(p.first, p.second, it.first, it.second).empty()) {
|
if (!cheminPieces(p.first, p.second, it.first, it.second).empty()) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
Dames::Dames(Joueur &j1, Joueur &j2)
|
Dames::Dames(Joueur &j1, Joueur &j2)
|
||||||
: Jeu(j1), plateau(PlateauDames(j1, j2)), joueur2(j2) {
|
: Jeu(j1), plateau(PlateauDames(j1, j2)), joueur2(j2) {
|
||||||
std::srand(static_cast<unsigned int>(time(0)));
|
std::srand(static_cast<unsigned int>(time(0)));
|
||||||
int r = std::rand() % 2;
|
const int r = std::rand() % 2;
|
||||||
if (r == 0) {
|
if (r == 0) {
|
||||||
joueurCourant = j1;
|
joueurCourant = j1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -35,7 +35,7 @@ void Dames::play() {
|
||||||
|
|
||||||
void Dames::event(const int, const int) {}
|
void Dames::event(const int, const int) {}
|
||||||
|
|
||||||
std::pair<int, int> Dames::getPosition() const {
|
const std::pair<const int, const int> Dames::getPosition() const {
|
||||||
if (posCurseur.first > plateau.getTaille() - 1) {
|
if (posCurseur.first > plateau.getTaille() - 1) {
|
||||||
std::cerr << "Position inconnu du plateau.\n";
|
std::cerr << "Position inconnu du plateau.\n";
|
||||||
return std::make_pair(-1, -1);
|
return std::make_pair(-1, -1);
|
||||||
|
@ -50,11 +50,11 @@ std::pair<int, int> Dames::getPosition() const {
|
||||||
// les pièces aient des attributs pour leur position (comme proposé dans Piece)
|
// les pièces aient des attributs pour leur position (comme proposé dans Piece)
|
||||||
// ?
|
// ?
|
||||||
bool Dames::prisePossible(Joueur &joueur) const {
|
bool Dames::prisePossible(Joueur &joueur) const {
|
||||||
const std::vector<Piece *> &pieces = joueur.getPieces();
|
const std::vector<const Piece *> &pieces = joueur.getPieces();
|
||||||
int x = 1;
|
int x = 1;
|
||||||
int y = 1;
|
int y = 1;
|
||||||
for (uint i = 0; i < pieces.size(); i++) {
|
for (uint i = 0; i < pieces.size(); i++) {
|
||||||
PieceDames *p = dynamic_cast<PieceDames *>(pieces[i]);
|
const PieceDames *p = dynamic_cast<const PieceDames *>(pieces[i]);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
throw std::runtime_error("Cette pièce est.. étrange.");
|
throw std::runtime_error("Cette pièce est.. étrange.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ void PieceDames::setDame(const bool d) {
|
||||||
dame = d;
|
dame = d;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PieceDames::to_string(const enum Categorie cat) const {
|
const std::string PieceDames::to_string(const enum Categorie cat) const {
|
||||||
switch (cat) {
|
switch (cat) {
|
||||||
case Blanche:
|
case Blanche:
|
||||||
return "Blanche";
|
return "Blanche";
|
||||||
|
@ -27,7 +27,7 @@ std::string PieceDames::to_string(const enum Categorie cat) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sf::Color PieceDames::getScreenColor() const {
|
const sf::Color PieceDames::getScreenColor() const {
|
||||||
// TODO
|
// TODO
|
||||||
return sf::Color::White;
|
return sf::Color::White;
|
||||||
}
|
}
|
||||||
|
|
|
@ -71,7 +71,7 @@ void Ecran::afficher(
|
||||||
|
|
||||||
// Affichage des FPS
|
// Affichage des FPS
|
||||||
if (fps) {
|
if (fps) {
|
||||||
float currentTime = fpsClock.restart().asSeconds();
|
const float currentTime = fpsClock.restart().asSeconds();
|
||||||
|
|
||||||
// Toutes les 2 secondes
|
// Toutes les 2 secondes
|
||||||
if (printFpsclock.getElapsedTime().asSeconds() >= 2.f) {
|
if (printFpsclock.getElapsedTime().asSeconds() >= 2.f) {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "../includes/Jeu.hpp"
|
#include "../includes/Jeu.hpp"
|
||||||
|
|
||||||
Jeu::Jeu(Joueur &j1) : joueur1(j1), joueurCourant(Joueur(j1)) {}
|
Jeu::Jeu(const Joueur &j1) : joueur1(j1), joueurCourant(Joueur(j1)) {}
|
||||||
|
|
||||||
Jeu::~Jeu() {}
|
Jeu::~Jeu() {}
|
||||||
|
|
|
@ -28,7 +28,7 @@ std::ostream &operator<<(std::ostream &out, const Joueur &data) {
|
||||||
out << "[]";
|
out << "[]";
|
||||||
} else {
|
} else {
|
||||||
out << "[\n";
|
out << "[\n";
|
||||||
for (Piece *p : data.pieces) {
|
for (const Piece *p : data.pieces) {
|
||||||
out << " " << *p << ",\n";
|
out << " " << *p << ",\n";
|
||||||
}
|
}
|
||||||
out << ']';
|
out << ']';
|
||||||
|
@ -37,11 +37,11 @@ std::ostream &operator<<(std::ostream &out, const Joueur &data) {
|
||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Joueur::ajoutPiece(Piece *piece) {
|
void Joueur::ajoutPiece(const Piece *piece) {
|
||||||
pieces.push_back(piece);
|
pieces.push_back(piece);
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<Piece *> Joueur::getPieces() const {
|
const std::vector<const Piece *> Joueur::getPieces() const {
|
||||||
return pieces;
|
return pieces;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ int Joueur::getNum() const {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Joueur::retirePiece(Piece *piece) {
|
bool Joueur::retirePiece(Piece *piece) {
|
||||||
auto it = std::find(pieces.begin(), pieces.end(), piece);
|
const auto it = std::find(pieces.begin(), pieces.end(), piece);
|
||||||
const bool found = it != pieces.end();
|
const bool found = it != pieces.end();
|
||||||
|
|
||||||
if (found) {
|
if (found) {
|
||||||
|
|
|
@ -32,6 +32,6 @@ bool Piece::isSelectionnee() const {
|
||||||
return selected;
|
return selected;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, int> Piece::getPos() const {
|
const std::pair<const int, const int> Piece::getPos() const {
|
||||||
return std::make_pair(x, y);
|
return std::make_pair(x, y);
|
||||||
}
|
}
|
||||||
|
|
|
@ -67,7 +67,7 @@ void Plateau::afficherPlateau(std::ostream &out, const bool d) const {
|
||||||
Ecran::window.draw(cell);
|
Ecran::window.draw(cell);
|
||||||
|
|
||||||
// Dessine la pièce
|
// Dessine la pièce
|
||||||
Piece *p = plateau[i][j];
|
const Piece *p = plateau[i][j];
|
||||||
if (p != nullptr) {
|
if (p != nullptr) {
|
||||||
if (p->isSelectionnee()) {
|
if (p->isSelectionnee()) {
|
||||||
piece.setOutlineColor(sf::Color::Green);
|
piece.setOutlineColor(sf::Color::Green);
|
||||||
|
@ -117,12 +117,12 @@ Piece *Plateau::getPiece(const int x, const int y) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, int> Plateau::trouveCoordonnees(const int x, const int y) const {
|
const std::pair<const int, const int>
|
||||||
|
Plateau::trouveCoordonnees(const int x, const int y) const {
|
||||||
const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille;
|
const float tailleCellule = static_cast<float>(Ecran::largeur()) / taille;
|
||||||
|
|
||||||
int xPlateau = static_cast<int>(x / tailleCellule);
|
return std::make_pair(static_cast<int>(x / tailleCellule),
|
||||||
int yPlateau = static_cast<int>(y / tailleCellule);
|
static_cast<int>(y / tailleCellule));
|
||||||
return std::make_pair(xPlateau, yPlateau);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Plateau::getTaille() const {
|
int Plateau::getTaille() const {
|
||||||
|
@ -151,14 +151,15 @@ void Plateau::modifierSelection(const int x, const int y) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::pair<int, int> Plateau::moveSelection(const int x, const int y) {
|
const std::pair<const int, const int> Plateau::moveSelection(const int x,
|
||||||
|
const int y) {
|
||||||
if (selection == nullptr) {
|
if (selection == nullptr) {
|
||||||
// Ne fais rien si on a rien a bouger
|
// Ne fais rien si on a rien a bouger
|
||||||
return std::make_pair(-1, -1);
|
return std::make_pair(-1, -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Récupère les coordonnées
|
// Récupère les coordonnées
|
||||||
std::pair<int, int> ancienneCoordonnees =
|
const std::pair<const int, const int> ancienneCoordonnees =
|
||||||
std::make_pair(selection->x, selection->y);
|
std::make_pair(selection->x, selection->y);
|
||||||
|
|
||||||
// Retire la pièce de là où elle est pour le plateau
|
// Retire la pièce de là où elle est pour le plateau
|
||||||
|
|
|
@ -8,7 +8,7 @@ PieceSafari::PieceSafari(const enum Categorie cat, const int posX,
|
||||||
|
|
||||||
PieceSafari::~PieceSafari() {}
|
PieceSafari::~PieceSafari() {}
|
||||||
|
|
||||||
std::string PieceSafari::to_string(const enum Categorie cat) const {
|
const std::string PieceSafari::to_string(const enum Categorie cat) const {
|
||||||
switch (cat) {
|
switch (cat) {
|
||||||
case Barriere:
|
case Barriere:
|
||||||
return "Barrière";
|
return "Barrière";
|
||||||
|
@ -24,7 +24,7 @@ std::string PieceSafari::to_string(const enum Categorie cat) const {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sf::Color PieceSafari::getScreenColor() const {
|
const sf::Color PieceSafari::getScreenColor() const {
|
||||||
// TODO
|
// TODO
|
||||||
return sf::Color::White;
|
return sf::Color::White;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
/* Contrairement aux autres jeux ici on donne des pointeurs et pas des
|
/* Contrairement aux autres jeux ici on donne des pointeurs et pas des
|
||||||
* références vu que j3 peut ne pas exister (default to nullptr)
|
* références vu que j3 peut ne pas exister (default to nullptr)
|
||||||
* Je sais pas trop si c'est une bonne idée, à méditer */
|
* Je sais pas trop si c'est une bonne idée, à méditer */
|
||||||
Safari::Safari(Joueur &j1, Joueur &j2, Joueur *j3)
|
Safari::Safari(const Joueur &j1, const Joueur &j2, const Joueur *j3)
|
||||||
: Jeu(j1), plateau(PlateauSafari()), joueur2{j2}, joueur3{j3} {
|
: Jeu(j1), plateau(PlateauSafari()), joueur2{j2}, joueur3{j3} {
|
||||||
for (int i = 0; i < 50; i++) {
|
for (int i = 0; i < 50; i++) {
|
||||||
// TODO: Les pièces ont des positions invalides, il faut penser à les
|
// TODO: Les pièces ont des positions invalides, il faut penser à les
|
||||||
|
@ -35,7 +35,7 @@ void Safari::play() {
|
||||||
|
|
||||||
void Safari::event(const int, const int) {}
|
void Safari::event(const int, const int) {}
|
||||||
|
|
||||||
std::pair<int, int> Safari::getPosition() const {
|
const std::pair<const int, const int> Safari::getPosition() const {
|
||||||
if (posCurseur.first > plateau.getTaille() - 1) {
|
if (posCurseur.first > plateau.getTaille() - 1) {
|
||||||
std::cerr << "Position inconnu du plateau.\n";
|
std::cerr << "Position inconnu du plateau.\n";
|
||||||
return std::make_pair(-1, -1);
|
return std::make_pair(-1, -1);
|
||||||
|
|
|
@ -20,14 +20,14 @@ void help(char const *progName) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char const *argv[]) {
|
int main(int argc, char const *argv[]) {
|
||||||
Ecran e;
|
const Ecran e;
|
||||||
Ecran::toggleFps();
|
Ecran::toggleFps();
|
||||||
|
|
||||||
// Interface cli
|
// Interface cli
|
||||||
if (argc >= 2) {
|
if (argc >= 2) {
|
||||||
Joueur j1(1);
|
Joueur j1(1);
|
||||||
|
|
||||||
std::string arg = argv[1];
|
const std::string arg = argv[1];
|
||||||
if (arg.compare("help") == 0) {
|
if (arg.compare("help") == 0) {
|
||||||
help(argv[0]);
|
help(argv[0]);
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ int main(int argc, char const *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (arg.compare("butin") == 0) {
|
else if (arg.compare("butin") == 0) {
|
||||||
Joueur j2(2);
|
const Joueur j2(2);
|
||||||
|
|
||||||
Butin b(j1, j2);
|
Butin b(j1, j2);
|
||||||
b.init();
|
b.init();
|
||||||
|
@ -50,7 +50,7 @@ int main(int argc, char const *argv[]) {
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (arg.compare("safari") == 0) {
|
else if (arg.compare("safari") == 0) {
|
||||||
Joueur j2(2);
|
const Joueur j2(2);
|
||||||
Joueur *j3 = nullptr;
|
Joueur *j3 = nullptr;
|
||||||
// TODO: demander à l'utilisateur un 3e joueur
|
// TODO: demander à l'utilisateur un 3e joueur
|
||||||
{}
|
{}
|
||||||
|
|
Reference in a new issue