This commit is contained in:
Mylloon 2024-01-07 12:44:33 +01:00
parent aca2abb55e
commit 0cf21f519a
Signed by: Anri
GPG key ID: A82D63DFF8D1317F
15 changed files with 38 additions and 31 deletions

View file

@ -35,16 +35,16 @@ class Butin : private Jeu {
const std::string msgTonTour() const; const std::string msgTonTour() const;
// Message affichant le nombre de points // Message affichant le nombre de points
const std::string msgPoints(const std::pair<int, int> points) const; const std::string msgPoints(const Position points) const;
// Position curseur // Position curseur
const std::pair<const int, const int> getPosition() const override; const Position getPosition() const override;
// Change de joueur courant // Change de joueur courant
void changerJoueurCourant(); void changerJoueurCourant();
// Renvoie le nombre de points des joueurs 1 et 2 // Renvoie le nombre de points des joueurs 1 et 2
std::pair<int, int> calculpoints(const bool finPartie = false) const; Position calculpoints(const bool finPartie = false) const;
public: public:
Butin(Joueur &joueur1, Joueur &joueur2); // constructor Butin(Joueur &joueur1, Joueur &joueur2); // constructor

View file

@ -23,7 +23,7 @@ public:
void event(const int x, const int y) override; void event(const int x, const int y) override;
// Position curseur // Position curseur
const std::pair<const int, const int> getPosition() const override; const Position 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;

View file

@ -24,5 +24,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 const std::pair<const int, const int> getPosition() const = 0; virtual const Position getPosition() const = 0;
}; };

View file

@ -1,5 +1,6 @@
#pragma once #pragma once
#include "types.hpp"
#include <SFML/Graphics/Color.hpp> #include <SFML/Graphics/Color.hpp>
#include <iostream> #include <iostream>
@ -33,7 +34,7 @@ public:
virtual const 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
const std::pair<const int, const int> getPos() const; const Position getPos() const;
// Renvoie si la pièce est selectionnée // Renvoie si la pièce est selectionnée
bool isSelectionnee() const; bool isSelectionnee() const;

View file

@ -1,6 +1,7 @@
#pragma once #pragma once
#include "../includes/Piece.hpp" #include "../includes/Piece.hpp"
#include "types.hpp"
#include <vector> #include <vector>
class Plateau { class Plateau {
@ -33,14 +34,13 @@ 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 ?)
const std::pair<const int, const int> moveSelection(const int x, const int y); const Position 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
const std::pair<const int, const int> trouveCoordonnees(const int x, const Position trouveCoordonnees(const int x, const int y) const;
const int y) const;
// Renvoie la taille du plateau // Renvoie la taille du plateau
int getTaille() const; int getTaille() const;

View file

@ -8,6 +8,9 @@ class PlateauSafari : public Plateau {
// Barrières // Barrières
std::vector<PieceSafari *> barrieres; std::vector<PieceSafari *> barrieres;
std::pair<int, int> placementBarriere1;
std::pair<int, int> placementBarriere2;
public: public:
PlateauSafari(); PlateauSafari();
virtual ~PlateauSafari(); virtual ~PlateauSafari();

View file

@ -39,7 +39,7 @@ class Safari : private Jeu {
PieceSafari *getPiece(Piece *) const; PieceSafari *getPiece(Piece *) const;
// Position curseur // Position curseur
const std::pair<const int, const int> getPosition() const override; const Position getPosition() const override;
// Change de joueur courant // Change de joueur courant
void changerJoueurCourant(); void changerJoueurCourant();

5
includes/types.hpp Normal file
View file

@ -0,0 +1,5 @@
#pragma once
#include <utility>
using Position = std::pair<const int, const int>;

View file

@ -39,7 +39,7 @@ const std::string Butin::msgTonTour() const {
", c'est votre tour. " + msgPoints(calculpoints()); ", c'est votre tour. " + msgPoints(calculpoints());
} }
const std::string Butin::msgPoints(const std::pair<int, int> points) const { const std::string Butin::msgPoints(Position points) const {
return "J1 : " + std::to_string(points.first) + " vs " + return "J1 : " + std::to_string(points.first) + " vs " +
std::to_string(points.second) + " : J2"; std::to_string(points.second) + " : J2";
} }
@ -124,7 +124,7 @@ void Butin::event(const int x, const int y) {
// Mange les pièces sur le chemin // Mange les pièces sur le chemin
for (const Piece *it : chemin) { for (const Piece *it : chemin) {
// Récupère la pièce // Récupère la pièce
const std::pair<const int, const int> pos = it->getPos(); const Position 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
@ -160,7 +160,7 @@ void Butin::event(const int x, const int y) {
} }
} }
const std::pair<const int, const int> Butin::getPosition() const { const Position 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);
@ -177,7 +177,7 @@ void Butin::changerJoueurCourant() {
} }
} }
std::pair<int, int> Butin::calculpoints(const bool end) const { Position Butin::calculpoints(const bool end) const {
// Nombre de points des joueurs // Nombre de points des joueurs
int j1 = 0, j2 = 0; int j1 = 0, j2 = 0;
for (const Piece *it : joueur1.getPieces()) { for (const Piece *it : joueur1.getPieces()) {

View file

@ -47,7 +47,7 @@ void PlateauButin::initialiserPlateau() {
const std::vector<const Piece *> const std::vector<const Piece *>
PlateauButin::cheminPieces(const int destX, const int destY) const { PlateauButin::cheminPieces(const int destX, const int destY) const {
const std::pair<const int, const int> posSelection = selection->getPos(); const Position posSelection = selection->getPos();
return cheminPieces(posSelection.first, posSelection.second, destX, destY); return cheminPieces(posSelection.first, posSelection.second, destX, destY);
} }
@ -104,10 +104,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<const int, const int>> casesVides; std::vector<Position> casesVides;
// Liste des pièces jaunes // Liste des pièces jaunes
std::vector<std::pair<const int, const int>> piecesJaunes; std::vector<Position> 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) {
@ -124,9 +124,9 @@ bool PlateauButin::coupsPossible() const {
} }
} }
for (std::pair<const int, const int> p : piecesJaunes) { for (Position p : piecesJaunes) {
// Parmis toutes les pièces jaunes // Parmis toutes les pièces jaunes
for (std::pair<const int, const int> it : casesVides) { for (Position 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;

View file

@ -32,7 +32,7 @@ void Dames::play() {
void Dames::event(const int, const int) {} void Dames::event(const int, const int) {}
const std::pair<const int, const int> Dames::getPosition() const { const Position Dames::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);
@ -52,7 +52,7 @@ bool Dames::prisePossible(Joueur &joueur) const {
int y = 1; int y = 1;
for (uint i = 0; i < pieces.size(); i++) { for (uint i = 0; i < pieces.size(); i++) {
const PieceDames *p = dynamic_cast<const PieceDames *>(pieces[i]); const PieceDames *p = dynamic_cast<const PieceDames *>(pieces[i]);
const std::pair<const int, const int> pos = p->getPos(); const Position pos = p->getPos();
if (!p) { if (!p) {
throw std::runtime_error("Cette pièce est.. étrange."); throw std::runtime_error("Cette pièce est.. étrange.");
} }

View file

@ -23,6 +23,6 @@ bool Piece::isSelectionnee() const {
return selected; return selected;
} }
const std::pair<const int, const int> Piece::getPos() const { const Position Piece::getPos() const {
return std::make_pair(x, y); return std::make_pair(x, y);
} }

View file

@ -109,8 +109,7 @@ Piece *Plateau::getPiece(const int x, const int y) const {
} }
} }
const std::pair<const int, const int> const Position Plateau::trouveCoordonnees(const int x, const int y) const {
Plateau::trouveCoordonnees(const int x, const int y) const {
const float tailleCelluleX = static_cast<float>(Ecran::largeur()) / taille; const float tailleCelluleX = static_cast<float>(Ecran::largeur()) / taille;
const float tailleCelluleY = static_cast<float>(Ecran::hauteur()) / taille; const float tailleCelluleY = static_cast<float>(Ecran::hauteur()) / taille;
@ -143,15 +142,14 @@ void Plateau::modifierSelection(const int x, const int y) {
} }
} }
const std::pair<const int, const int> Plateau::moveSelection(const int x, const Position Plateau::moveSelection(const int x, const int y) {
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
const std::pair<const int, const int> ancienneCoordonnees = const Position 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

View file

@ -116,7 +116,7 @@ void PlateauSafari::afficherPlateau(std::ostream &out, const bool d) const {
} }
bool PlateauSafari::deplacementValide(const int x, const int y) const { bool PlateauSafari::deplacementValide(const int x, const int y) const {
std::pair<const int, const int> posInitiale = selection->getPos(); Position posInitiale = selection->getPos();
return std::abs(x - posInitiale.first) == 0 || return std::abs(x - posInitiale.first) == 0 ||
std::abs(y - posInitiale.second) == 0; std::abs(y - posInitiale.second) == 0;

View file

@ -50,7 +50,7 @@ const std::string Safari::msgTonTour() const {
action = action =
"déplacez un " + getPiece(joueurCourant->getPieces().at(0))->getName(); "déplacez un " + getPiece(joueurCourant->getPieces().at(0))->getName();
} else { } else {
action = "placez une barrière"; action = "placez une barrière en cliquant sur 2 cases";
} }
return "Joueur " + std::to_string(joueurCourant->getNum()) + ", " + action + return "Joueur " + std::to_string(joueurCourant->getNum()) + ", " + action +
@ -76,7 +76,7 @@ void Safari::play() {
// Pas de joueur 3 // Pas de joueur 3
// On retire le dernier choix d'animal // On retire le dernier choix d'animal
const Piece *p = plateau.getPieces().at(0); const Piece *p = plateau.getPieces().at(0);
std::pair<const int, const int> pos = p->getPos(); Position pos = p->getPos();
plateau.modifierPlateau(pos.first, pos.second, nullptr); plateau.modifierPlateau(pos.first, pos.second, nullptr);
delete p; delete p;
@ -238,7 +238,7 @@ void Safari::event(const int x, const int y) {
} }
} }
const std::pair<const int, const int> Safari::getPosition() const { const Position Safari::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);